J'ai un fichier SQL de sauvegarde de 250 Mo, mais la limite sur le nouvel hébergement est que 100 Mo ...
Existe-t-il un programme qui vous permet de diviser un fichier SQL en plusieurs fichiers SQL?
Il semble que les gens répondent à la mauvaise question ... Je vais donc clarifier davantage:
Je n'ai que le fichier de 250 Mo et que le nouvel hébergement n'utilise que phpmyadmin, qui n'a actuellement aucune donnée dans la base de données. Je dois prendre le fichier de 250 Mo et le télécharger sur le nouvel hôte, mais il existe une limite de taille de téléchargement de 3 Mo de sauvegarde SQL. J'ai simplement besoin de prendre un fichier trop volumineux et de la diviser en plusieurs fichiers ne contenant que des instructions SQL valides complètes (aucune instruction ne peut être divisée entre deux fichiers).
De Comment puis-je diviser la sortie de MySqldump en fichiers plus petits?
Premier décharge le schéma (cela correspondait sûrement à 2 Mo, non?)
mysqldump -d --all-databases
et le restaurer.
Ensuite, débarrassez uniquement les données dans des instructions d'insertion distinctes, vous pouvez donc diviser les fichiers et les restaurer sans avoir à les concaténer sur le serveur distant.
mysqldump --all-databases --extended-insert=FALSE --no-create-info=TRUE
Le moyen le plus simple de diviser le fichier de sauvegarde consiste à utiliser un logiciel sqldumpsplitter
, ce qui vous permet de diviser le fichier dB en plusieurs fichiers DB. Télécharger ICI
Ou bien utiliser cette commande de terminal.
split -L 600 ./path/to/source/file.sql ./path/to/Dest/file-
Ici, 600 est le nombre de lignes que vous souhaitez avoir dans vos fichiers divisés. Et les deux arguments sont source et la destination des fichiers respectivement.
REMARQUE: Vous devez vérifier les fichiers fractionnés, vous ne divisez aucune commande.
J'ai écrit mysqldumpsplitter (script shell), qui divise les bases de données/tables comme indiqué de manière rapide et facile. Voir tous les cas d'utilisation possibles de Extrait de MySqldump .
sh mysqldumpsplitter.sh --source mysqldump-file.sql --extract DB --match_str database-name
Vous pouvez diviser un grand fichier dans Eclipse. J'ai essayé un fichier de 105 Go sous Windows avec succès:
Ajoutez simplement la bibliothèque MySqldumpSplitter à votre projet: http://dl.bintray.com/verace/mysqldumpsplitter/jar/
Note rapide sur la façon d'importer:
- In Eclipse, Right click on your project --> Import
- Select "File System" and then "Next"
- Browse the path of the jar file and press "Ok"
- Select (thick) the "MySQLDumpSplitter.jar" file and then "Finish"
- It will be added to your project and shown in the project folder in Package Explorer in Eclipse
- Double click on the jar file in Eclipse (in Package Explorer)
- The "MySQL Dump file splitter" window opens which you can specify the address of your dump file and proceed with split.
1) Avez-vous la possibilité de télécharger le fichier par une autre méthode, par exemple: SCP ou FTP, puis le restaurer depuis le fichier local?
2) Votre ISP prendra-t-il le fichier sur CD et le chargerez-vous?
3) Pouvez-vous restaurer le fichier sur un serveur local, puis effectuer une série de fichiers de sauvegarde à partir de celui-ci à l'aide de critères spécifiques pour réduire les tailles individuelles?
4) Vous pouvez diviser le fichier manuellement puis ranger les commandes SQL à la fin des fichiers?
Il y a quelques options si vous pouvez exécuter un script Bash ou Perl. Essayez celui-ci de yovey.com
#!/usr/bin/Perl -w
#
# splitmysqldump - split mysqldump file into per-database dump files.
use strict;
use warnings;
my $dbfile;
my $dbname = q{};
my $header = q{};
while (<>) {
# Beginning of a new database section:
# close currently open file and start a new one
if (m/-- Current Database\: \`([-\w]+)\`/) {
if (defined $dbfile && tell $dbfile != -1) {
close $dbfile or die "Could not close file!"
}
$dbname = $1;
open $dbfile, ">>", "$1_dump.sql" or die "Could not create file!";
print $dbfile $header;
print "Writing file $1_dump.sql ...\n";
}
if (defined
$dbfile && tell $dbfile != -1) {
print $dbfile $_;
}
# Catch dump file header in the beginning
# to be printed to each separate dump file.
if (!
$dbname) { $header .= $_; }
}
close $dbfile or die "Could not close file!"