Ich habe eine 250 MB Backup-SQL-Datei, aber das Limit für das neue Hosting beträgt nur 100 MB ...
Gibt es ein Programm, mit dem Sie eine SQL-Datei in mehrere SQL-Dateien aufteilen können?
Es scheint, als würden die Leute die falsche Frage beantworten ... also werde ich mehr klarstellen:
Ich habe NUR die 250 MB Datei und habe nur das neue Hosting mit phpMyAdmin, das derzeit keine Daten in der Datenbank hat. Ich muss die 250-MB-Datei nehmen und auf den neuen Host hochladen, aber es gibt eine Größenbeschränkung für das Hochladen von 100-MB-SQL-Sicherungsdateien. Ich muss einfach eine zu große Datei in mehrere Dateien aufteilen, die jeweils nur vollständig gültige SQL-Anweisungen enthalten (keine Anweisungen können zwischen zwei Dateien aufgeteilt werden).
Antworten:
Von Wie teile ich die Ausgabe von mysqldump in kleinere Dateien auf?
quelle
Der einfachste Weg, die Sicherungsdatei zu teilen, ist die Verwendung einer Software
sqldumpsplitter
, mit der Sie die Datenbankdatei in mehrere Datenbankdateien aufteilen können. Laden Sie hierOder verwenden Sie diesen Terminalbefehl.
Hier ist 600 die Anzahl der Zeilen, die Sie in Ihren geteilten Dateien haben möchten. Die beiden Argumente sind Quelle und Ziel der Dateien.
HINWEIS: Sie müssen die geteilten Dateien überprüfen, Sie teilen keinen Befehl.
quelle
split
empfehle ich zu verwendencsplit
. Es wird nicht direkt nach einer bestimmten Zeilennummer aufgeteilt, die sich beispielsweise zwischen einer Werteliste befindetINSERT
. Sie können einen regulären Ausdruck übergeben , um die zu teilenden Zeilen zu identifizieren. Verwenden Sie es beispielsweise folgendermaßen : `csplit -k dump.sql '/ ^ CREATE TABLE. * /' '{900}'` Dadurch wird Ihre Dump-Datei vor jedercreate table …
Anweisung aufgeteilt. Ändern Sie dies an Ihre Bedürfnisse. (Übrigens passiere ich{900}
statt{*}
weil ich eine Fehlermeldung "csplit: *}: schlechte Wiederholungszahl" bekomme , vielleicht nur ein Problem unter MacOS?)Ich habe mysqldumpsplitter (Shell-Skript) geschrieben, das die Datenbanken / Tabellen nach Anweisung schnell und einfach aufteilt. Sehen Sie sich alle möglichen Anwendungsfälle für das Extrahieren aus mysqldump an .
quelle
Dieser Code macht genau das, was Sie wollen (und es ist Open Source):
https://web.archive.org/web/20160313044916/http://rodo.nl/index.php?page=mysql-splitter
Sie können jede SQL-Datei in mehrere kleinere Dateien aufteilen (Sie können die maximale Größe definieren). Die SQL-Syntax wird korrekt beibehalten und funktioniert mit der Abfragesyntax für mehrere Einfügungen.
Hoffe das hilft!
quelle
1) Haben Sie die Möglichkeit, die Datei mit einer anderen Methode hochzuladen, z. B. scp oder ftp, und sie dann aus der lokalen Datei wiederherzustellen?
2) Nimmt Ihr ISP die Datei auf CD und lädt sie für Sie?
3) Können Sie die Datei auf einem lokalen Server wiederherstellen und dann eine Reihe von Sicherungsdateien daraus erstellen, indem Sie bestimmte Kriterien verwenden, um die einzelnen Größen niedrig zu halten?
4) Sie könnten die Datei manuell teilen und dann die SQL-Befehle am Ende der Dateien aufräumen?
quelle
4 was my first thought, but I can't even open the large file in notepad or any editor
- Notepad ++ kann gut damit umgehen. sonst Blick auf superuser.com/questions/34749/...Sie können eine große Datei in Eclipse teilen. Ich habe eine 105-GB-Datei in Windows erfolgreich ausprobiert:
Fügen Sie einfach die MySQLDumpSplitter-Bibliothek zu Ihrem Projekt hinzu: http://dl.bintray.com/verace/MySQLDumpSplitter/jar/
Kurzer Hinweis zum Importieren:
quelle
Ich hatte auch dieses Problem und entschied mich, einen extrem speicher- und CPU-effizienten Code zu codieren, der eine einzelne .sql-Datei in mehrere aufteilt (eine pro Tabelle).
Ich musste es schreiben, da jede andere Lösung, die ich fand, nicht gut genug lief. Auf einem echten 16-GB-Dump habe ich es geschafft, ihn in weniger als 2 Minuten aufzuteilen.
Der Code und die Anweisungen sind auf der Projektseite auf github verfügbar
quelle
Es gibt mehrere Optionen, wenn Sie ein Bash- oder Perl-Skript ausführen können. Probieren Sie dieses von yoodey.com
quelle
Anstatt die Datei aufzuteilen, können Sie einen MySQL-Client auf Ihrem lokalen Computer verwenden und ihn mit der Remote-MySQL-Datenbank verbinden. Ich benutze HeidiSQL und finde es sehr gut.
Natürlich kann es eine Weile dauern, bis die 250 MB SQL-Anweisungen über das Internet gesendet werden.
Sie können auch BigDump ausprobieren
quelle