Hoppa till innehållet
Gratis verktyg

Dela upp och komprimera SQL-filer med SQL Splitter

Är din SQL-fil för stor för att importeras i phpMyAdmin? SQL Splitter komprimerar den som .sql.gz eller delar upp den mellan fullständiga satser i delar under 1,9 MB, till exempel community-db.sql med 98 KB som .sql.gz med storleken 20 KB. Gratis, utan registrering och utan uppladdning: Din fil stannar i webbläsaren.

Byggd av Justin Schuessler

På en egen VPS importerar du stora dumpar via konsolen, utan phpMyAdmins uppladdningsgräns.

Din fil stannar i din webbläsare: Den varken laddas upp eller sparas.

Exempelresultat

Så delar SQL Splitter upp en dump

Först kontrollerar verktyget om den komprimerade filen ryms inom din gräns. Annars delar det filen mellan fullständiga statements och lägger till dumpens inledning i varje del. Exemplet är en liten mysqldump med målstorleken 40 KB, så att flera delar skapas. Dina resultat beror på din fil.

Exempel · Indata: community-db.sql, 98 KB, 56 statements, 2 tabeller, trigger, procedur och vy

SQL-fil
98 KB
Som .sql.gz
20 KB
4,9 gånger mindre
Delar under 40 KB
3
Importproblem hittades
9
DEFINER, CREATE DATABASE/USE, MySQL-8-kollation
Delar i importordning
community-db-part-001.sql     28 KB   17 Statements  players, scorescommunity-db-part-002.sql     40 KB    3 Statements  scorescommunity-db-part-003.sql     32 KB   18 Statements  scores

Varför detta verktyg

En SQL Splitter vars delar faktiskt går att importera

Många verktyg delar efter rader eller megabyte och bryter då sönder triggers, procedurer eller dataposter. Det här verktyget läser dumpen på samma sätt som mysql-klienten.

Komprimera först, dela sedan upp

SQL-dumpar innehåller mycket upprepad text och blir ofta flera gånger mindre som .sql.gz. phpMyAdmin kan importera dem direkt. Verktyget beräknar först den komprimerade storleken. Om den ligger under din gräns behöver du inte dela upp filen.

Dela endast mellan fullständiga statements

Parsern känner igen strängar med escape-tecken, kommentarer med --, # och /* */, /*!40101 … */-rader från mysqldump och DELIMITER-block. Ett semikolon i en textsträng eller ett DELIMITER-block delar inte upp innehållet.

Stora INSERT-statements delas upp radvis

Om ett INSERT-statement med många rader är större än en del, delas det upp i flera INSERT-statements med samma inledning, alltid mellan två dataposter. Om en enskild datapost är för stor anges dess nummer och tabell.

Varje del kan importeras separat

Teckenuppsättning, SQL-läge, tidszon och avstängning av kontrollen av främmande nycklar från dumpens inledning finns med i varje del. I slutet återställs allt. Även aktivt USE och DELIMITER följer med.

Importkorrigeringar med kryssrutor

DEFINER, CREATE DATABASE och USE, MySQL 8-kollationer och replikeringsrader: Verktyget visar hur ofta de förekommer och ändrar bara det du markerar. Korrigeringarna fungerar även utan uppdelning.

Körs i webbläsaren, även med hundratals MB

Dumpar innehåller ofta kunduppgifter. Filen strömmas i en Web Worker och lämnar inte din dator. Du kan följa förloppet och avbryta utan att fliken hänger sig.

Så fungerar det

Så importerar du en stor SQL-fil i tre steg

Från en för stor dump till en färdig databas, utan konto och utan uppladdning.

Steg 1

Ladda SQL-fil

Dra en .sql-, .sql.gz- eller .zip-fil till fältet. Verktyget läser den i webbläsaren, räknar SQL-satser och tabeller och letar efter vanliga importproblem.

Steg 2

Komprimera eller dela upp

Välj uppladdningsgräns: phpMyAdmin 2 MB, 8 MB eller ett eget värde. Om filen som .sql.gz ryms under gränsen laddar du ner den som en enda fil. Annars delar verktyget upp den i delar under målstorleken (vid 2 MB högst 1,9 MB), som du kan ladda ner var för sig eller som ZIP, om du vill med importkorrigeringar.

Steg 3

Importera i phpMyAdmin

Välj databasen till vänster, öppna fliken Importera, välj fil och klicka på OK. Importera flera delar i tur och ordning, del 1 först. Du kan också kopiera en del och klistra in den på fliken SQL.

Felmeddelanden

Varför importen i phpMyAdmin misslyckas och vad som hjälper

De vanligaste meddelandena vid import av en SQL-fil och rätt åtgärd i verktyget.

Importen fastnar vid ”Vänta, filen bearbetas.”

Orsak: Filen är större än phpMyAdmins uppladdningsgräns (hos oss 2 MB, visas som ”Maximal storlek: 2 048 KiB”). phpMyAdmin 5.2 visar då ofta inget fel, utan laddningsindikatorn fortsätter bara att snurra. Beroende på serverinställningarna kan du i stället få meddelandet ”Inga data togs emot för import”.

Lösning: Ladda upp som .sql.gz. Om filen fortfarande är för stor, dela upp den och importera delarna i tur och ordning.

”Det verkar som att anslutningen till servern har gått förlorad” på fliken SQL

Orsak: Den inklistrade texten är för stor. Webbläsaren skickar den kodad. Blanksteg och specialtecken räknas då tre gånger, radbrytningar sex gånger: Därför kan 1,9 MB text snabbt bli över 2 MB.

Lösning: Välj ”Klistra in i SQL-konsolen” i verktyget. Då ryms delarna inom gränsen även när de är kodade.

#1227 Access denied; you need (at least one of) the SUPER privilege(s)

Orsak: Vyer, triggers eller procedurer har en DEFINER som anger en användare från den gamla servern. I MariaDB heter behörigheten SET USER, för SQL_LOG_BIN från MySQL-dumpar heter den BINLOG ADMIN.

Lösning: Markera korrigeringen ”Ta bort DEFINER” och, för MySQL-dumpar, ”Ta bort replikeringsrader”.

#1273 Unknown collation: 'utf8mb4_0900_ai_ci'

Orsak: Dumpen kommer från MySQL 8. MariaDB stöder inte denna kollation, inte ens version 11.6.

Lösning: Markera korrigeringen ”Ersätt MySQL 8-kollationer”.

#1193 Unknown system variable 'GTID_PURGED'

Orsak: Dumpen kommer från en MySQL-server med GTID-replikering. Den här raden finns bara i MySQL.

Lösning: Markera korrigeringen ”Ta bort replikeringsrader”.

#1044 Access denied for user … to database …

Orsak: Dumpen skapar en egen databas med CREATE DATABASE eller växlar med USE till en databas som din användare inte har åtkomst till.

Lösning: Markera korrigeringen ”Ta bort CREATE DATABASE och USE” och välj först rätt databas till vänster.

#1452 Cannot add or update a child row: a foreign key constraint fails

Orsak: En del lägger in data vars relaterade rader inte kommer förrän i en senare del.

Lösning: Verktyget stänger av kontrollen av främmande nycklar i varje del. Importera ändå delarna i rätt ordning.

#1050 Table already exists eller #1062 Duplicate entry

Orsak: En del importerades två gånger, ofta efter ett avbrott.

Lösning: Börja inte om från början: Fortsätt med den del som avbröts. Om du är osäker, töm databasen och börja om.

Rätt metod

Komprimera, dela upp eller använda ett annat verktyg?

Att dela upp filen är inte alltid den bästa lösningen. Så här avgör du det på en minut.

Väg 1

Komprimera (.sql.gz)

Det snabbaste sättet om den komprimerade filen ryms inom gränsen: en fil, en import, inga ändringar.

Väg 2

Dela upp med denna SQL Splitter

Om även .sql.gz-filen är för stor och du bara har phpMyAdmin. Det kräver flera uppladdningar, men ingen ytterligare programvara.

Väg 3

HeidiSQL eller en annan databasklient

För mycket stora dumpar eller enskilda dataposter över gränsen. Klienten ansluter direkt till databasen, så någon uppladdningsgräns finns inte. I Windows: Arkiv, Kör SQL-fil.

Väg 4

mysql-klienten i konsolen

Om du har en VPS eller SSH-åtkomst: mysql -u benutzer -p datenbank < dump.sql importerar utan phpMyAdmins uppladdningsgräns. Använd zcat för en .gz-fil.

Upptäck mer

Fler verktyg

FAQ

Vanliga frågor

Korta svar om phpMyAdmin-importer, SQL-dumpar och denna SQL Splitter.

Antingen en .sql.gz-fil som phpMyAdmin importerar direkt eller flera .sql-filer som var och en ryms inom din gräns, både separat och som ZIP. Du kan även få dem som .sql.gz eller som text att kopiera. community-db.sql med 98 KB blir 20 KB som .sql.gz eller 3 delar med målstorleken 40 KB. Varje del innehåller dumpens inledning och visas i den ordning du ska importera dem. Verktyget visar dessutom storlek, statements och tabeller för varje del.

phpMyAdmin tar emot filer via PHP, och PHP begränsar storleken på uppladdningar (upload_max_filesize och post_max_size). På våra databasservrar är gränsen 2 MB. phpMyAdmin visar den under Importera som ”Maximal storlek: 2.048 KiB”. Även text som du klistrar in på fliken SQL omfattas av gränsen. Därför finns läget ”Klistra in i SQL-konsolen” i verktyget: Det utgår från den storlek som webbläsaren faktiskt skickar och gör delarna mindre därefter.

Ofta, ja. Gränsen gäller den uppladdade filen, alltså den komprimerade, och SQL-dumpar innehåller mycket upprepad text. phpMyAdmin packar själv upp en .sql.gz vid import. SQL Splitter beräknar först storleken på .sql.gz, visar hur många gånger mindre den är och rekommenderar bara uppdelning om den komprimerade filen fortfarande överskrider din gräns.

Ladda in en .sql-, .sql.gz- eller .zip-fil i SQL Splitter, till exempel en export från mysqldump, mariadb-dump, phpMyAdmin, HeidiSQL eller Adminer. Filen delas bara mellan fullständiga satser: Verktyget känner igen strängar med escape-tecken, kommentarer, /*!…*/-rader och DELIMITER-block för triggers och procedurer. Ett semikolon inuti dem delar inte upp innehållet. Om en INSERT-sats med många rader är större än en del, delas den mellan två poster i flera INSERT-satser med samma inledning. Om en enskild post är större än målstorleken, oftast en bild i en BLOB-kolumn, anger verktyget satsnummer, rad och tabell. Importera den delen med HeidiSQL eller mysql-klienten, eller försök ladda upp den som .sql.gz.

Importera delarna i nummerordning, med del 1 först, och alla till samma databas. Del 1 innehåller oftast CREATE TABLE-satserna, medan senare delar fyller tabellerna. Om dumpen har främmande nycklar stänger varje del av kontrollen av dem i början och slår på den igen i slutet. Om en del avbryts åtgärdar du felet och fortsätter med just den delen. Importera inte tidigare delar igen, annars får du ”Table already exists” eller ”Duplicate entry”. Om du inte längre vet vad som har importerats tömmer du databasen (markera och ta bort alla tabeller på fliken Struktur i phpMyAdmin) och börjar om med del 1.

Vyer, triggers, procedurer och händelser sparar vilken användare de körs under (DEFINER). Om det står en användare från den gamla servern där, till exempel root, får din databasanvändare inte skapa dem. Markera ”Ta bort DEFINER” i verktyget, så skapar servern dem med din användare. MariaDB kallar den saknade behörigheten SET USER. Om dumpen kommer från MySQL kan även raderna SQL_LOG_BIN (behörigheten BINLOG ADMIN) och GTID_PURGED orsaka fel. För dem finns ”Ta bort replikeringsrader”.

utf8mb4_0900_ai_ci är standardkollationen i MySQL 8. MariaDB känner inte igen den, inte ens i version 11.6, och avbryter CREATE TABLE med #1273. Korrigeringen ”Ersätt MySQL 8-kollationer” byter ut den och övriga 0900-varianter mot utf8mb4_unicode_ci, och de skiftlägeskänsliga mot utf8mb4_bin. INSERT-satserna, och därmed dina data, lämnas oförändrade.

Nej. En dump innehåller ofta kunduppgifter och inloggningsuppgifter, så verktyget läser filen enbart i din webbläsare, i en Web Worker. Ingen uppladdning, lagring eller konto behövs. På fliken Nätverk i utvecklarverktygen kan du se att inga förfrågningar med din fil skickas när du komprimerar eller delar upp den.

Fler frågor?

Kontakta supporten
Större databaser?

Din databas utan uppladdningsgräns på din egen VPS

Med en VPS från ZAP-Hosting har du root-åtkomst, kan importera stora dumpar via konsolen och köra MySQL, MariaDB eller PostgreSQL som du vill.

4,4/5 Trustpilot32.000+ Aktiva servrarSedan 2010

Ingen konfigurering. Ingen risk. Online på några sekunder.

Flexibel avtalstidAvsluta när som helstOnline på 60 sekunder

Letar du efter fler verktyg? Visa alla utvecklarverktyg