J'utilise mysqldump dans une tâche cron pour sauvegarder une base de données de plus de 2 millions de lignes.
Il crée un fichier texte qui peut être utilisé pour restaurer l'enregistrement de données à partir de la ligne de commande.
J'ai pensé qu'il serait utile d'éditer le dump avant une restauration en tant que rapide pour modifier les valeurs et les noms de tables ou de colonnes - du moins jusqu'à ce que j'en sache plus et que je sois sûr de pouvoir le faire avec ALTER et UPDATE.
L'édition de gros fichiers texte ne me dérange pas, mais j'ai été surpris de constater que dans une 250 mégaoctets de ma base de données, il n'y avait qu'environ 300 lignes . Chaque ligne comportait quelque chose comme 800 000 caractères.
Existe-t-il un autre moyen de générer des vidages avec un meilleur contrôle de la longueur des lignes ?
Ou devrais-je post-traiter le dump avec des outils comme sed ou Perl ?
0 votes
Considérez le ; entre les requêtes comme votre endienne de ligne.
0 votes
En fait, j'ai utilisé Perl et dit $line =~ s{\\).\(}{\i1}, \n (}g ; donc j'ai eu BEAUCOUP de lignes supplémentaires.
0 votes
C'est-à-dire que le ; était déjà mon eol à la fin de chaque INSERT dans table_name VALUES (..),(..),(..) .. (..) ; 282 lignes dans le fichier entier, 252 se terminant par ; J'ai choisi d'insérer des nouvelles lignes après les virgules
2 votes
Vous êtes sûr que vos données réelles ne contiennent pas de séquences parenthèses-comma-parenthèses ?
4 votes
Il s'agit d'un défaut connu dans
mysqldump
. Il a été rapporté pour la première fois en 2004 . En 2011, les deux Tim Riker & Lon Binder a suggéré un patch d'une ligne pour le corriger. De façon ahurissante, cette toujours n'a pas été mis en œuvre par lmysqldump
développeurs/mainteneurs. Le rapport de bogue original ayant été fermé (à tort et à travers), le problème est maintenant suivi. aquí .0 votes
Voir aussi : stackoverflow.com/questions/15750535