Dump d'une base de données mysql à un texte en clair (CSV) la sauvegarde à partir de la ligne de commande
Je voudrais éviter mysqldump depuis que les résultats sous une forme qui est seulement pratique pour mysql à lire. CSV semble plus universel (un fichier par table est très bien). Mais si il y a des avantages à mysqldump, je suis tout ouïe. Aussi, je voudrais quelque chose que je peux courir à partir de la ligne de commande (linux). Si c'est une base de données mysql script, des pointeurs vers des comment faire une telle chose serait utile.
- double possible de la Façon de sortie de requête MySQL résultats au format csv?
Vous devez vous connecter pour publier un commentaire.
Si vous pouvez faire face à la table-à-un-temps, et vos données ne sont pas binaires, utilisez le
-B
option pour lemysql
de commande. Avec cette option, il va générer TSV (séparées par des tabulations) des fichiers qui peuvent importer dans Excel, etc, assez facilement:Alternativement, si vous avez un accès direct au système de fichiers du serveur, utilisez
SELECT INTO OUTFILE
qui peuvent générer de vrais fichiers CSV:\. file.sql
lit à partir de). En tant que tel, en fonction de votre installation, vous trouverez probablement qu'il est à/var/lib/mysql/[db_name]/table.csv
Dans MySQL lui-même, vous pouvez spécifier une sortie CSV comme:
De http://www.tech-recipes.com/rx/1475/save-mysql-query-results-into-a-text-or-csv-file/
Vous pouvez dump d'une base de données entière en une seule fois avec la commande mysqldump est --onglet option. Vous fournissez un chemin de répertoire et il en crée un .fichier sql avec le CREATE TABLE DROP SI il EXISTE une syntaxe et une .fichier txt avec le contenu, séparées par des tabulations. Pour créer des fichiers séparés par des virgules, vous pouvez utiliser les éléments suivants:
Ce chemin d'accès doit être accessible en écriture par l'utilisateur mysql et l'utilisateur qui exécute la commande, donc pour des raisons de simplicité je recommande
chmod 777 /tmp/path_to_dump/
premier.mysqldump: You must use option --tab with --fields-...
Le select into outfile option ne fonctionne pas pour moi, mais le dessous de la voie détournée de la tuyauterie fichier délimité par des tabulations par le SED n':
t
remplacé par", "
dans le fichier de sortie. Pas exactement ce que je recherchais.Ici est la plus simple de commande pour qu'il
Si il y a une virgule dans la colonne valeur, nous pouvons générer .tsv au lieu de .csv avec la commande suivante
Si vous avez vraiment besoin d'un "de Sauvegarde", puis vous avez aussi besoin de schéma de base de données, comme les définitions de table, vue sur les définitions, les procédures de la banque et ainsi de suite. Une sauvegarde d'une base de données n'est pas seulement les données.
La valeur de la commande mysqldump format de sauvegarde est précisément qu'il est très FACILE de l'utiliser pour restaurer les bases de données mysql. Une sauvegarde qui n'est pas facilement restauré est beaucoup moins utile. Si vous êtes à la recherche d'une méthode fiable de sauvegarde de données mysql de sorte que vous pouvez restaurer à un serveur mysql alors je pense que vous devriez coller avec l'outil mysqldump.
Mysql est gratuit et fonctionne sur de nombreuses plates-formes différentes. La configuration d'un nouveau serveur mysql que je peux le restaurer pour est simple. Je ne suis pas du tout inquiet de ne pas être en mesure de configuration de mysql, donc je peux faire une restauration.
Je serais beaucoup plus inquiet à propos d'une coutume de sauvegarde/restauration basée sur une fragile format csv/tsv défaut. Êtes-vous sûr que toutes vos citations, des virgules ou des tabulations qui sont dans vos données, serait d'obtenir échappé correctement et puis analysé correctement par votre outil de restauration?
Si vous êtes à la recherche d'une méthode pour extraire les données, puis voir plusieurs dans les autres réponses.
Vous pouvez utiliser le script ci-dessous pour obtenir la sortie pour les fichiers csv. Un fichier par table avec des en-têtes.
utilisateur est votre nom d'utilisateur, le mot de passe est le mot de passe si vous ne voulez pas continuer à taper le mot de passe pour chaque table et mydb est le nom de base de données.
Explication du script: La première expression de sed pour remplacer les tabulations par des "," de sorte que vous avez des champs entre guillemets et séparés par des virgules. Le second insérer des guillemets au début et à la troisième insérer des guillemets à la fin. Et au final on prend soin de l' \n.
--skip-column-names
dans ma version de mysql, ainsiDécouvrez mk-parallèle-dump qui fait partie de la toujours utile maatkit suite d'outils. Cela peut vidage séparées par des virgules fichiers avec l' --csv option.
Cela peut faire toute votre db, sans préciser les différents tableaux, et vous pouvez spécifier des groupes de tables dans une table backupset.
Noter qu'il exporte également des définitions des tables, des vues et des déclencheurs dans des fichiers séparés. En plus de fournir une sauvegarde complète dans un plus universellement accessible, elle aussi immédiatement restituable avec mk-parallèle-restauration
maatkit
semble faire partie de lapercona toolkit
maintenant, mais je ne peux pas trouver des outils correspondants.Deux ligne de PowerShell réponse:
Boom-bata-boom
-D
= le nom de votre base de données-e
= requête-B
= délimité par des tabulationsSi vous voulez vider la totalité de la db csv