Maison >base de données >tutoriel mysql >Comment puis-je exporter en masse toutes les tables MySQL vers des fichiers CSV à l'aide de « mysql » et « sed » ?

Comment puis-je exporter en masse toutes les tables MySQL vers des fichiers CSV à l'aide de « mysql » et « sed » ?

DDD
DDDoriginal
2024-11-30 03:35:15326parcourir

How Can I Bulk Export All MySQL Tables to CSV Files Using `mysql` and `sed`?

Exportation CSV en masse avec 'mysqldump'

Dans le domaine de la gestion des données MySQL, l'exportation du contenu d'une table au format CSV peut être une tâche cruciale . Bien que « mysqldump » soit un utilitaire puissant pour les sauvegardes de bases de données, il lui manque une option permettant d'exporter exclusivement chaque table au format CSV. Cet article explore une approche alternative pour y parvenir en utilisant une combinaison de « mysql » et de post-traitement.

'mysql' avec le paramètre « -B »

Le point crucial L'une des solutions de notre solution consiste à exploiter le paramètre '-B' dans l'utilitaire 'mysql'. Ce paramètre demande au programme d'afficher les résultats dans un format délimité par des tabulations. En acheminant la sortie via « sed », nous pouvons manipuler davantage les données pour créer un fichier CSV avec des en-têtes.

Itération du script Bash

Pour exporter toutes les tables dans un base de données, nous pouvons utiliser un script Bash pour parcourir la liste des noms de tables. Une approche consiste à combiner les commandes suivantes :

mysql -u username -ppassword dbname -sN -e "SHOW TABLES;" | \
for tb in $(mysql -u username -ppassword dbname -sN -e "SHOW TABLES;"); do
    mysql -B -u username -p password database -h dbhost -e "SELECT * FROM $tb;" \
    | sed “s/”/\””/g;s/'/\'/;s/\t/\”,\”/g;s/^/\”/;s/$/\”/;s/\n//g” > "$tb.csv"
done

Ce script récupère d'abord la liste des tables à l'aide de 'SHOW TABLES' et la stocke dans la variable 'tb'. Il parcourt ensuite chaque nom de table et exécute une requête « SELECT * » avec le paramètre « -B ». La sortie résultante est traitée par 'sed' et stockée dans un fichier CSV nommé d'après la table.

Conclusion

En combinant le paramètre '-B' de 'mysql ' et le post-traitement 'sed', nous pouvons exporter efficacement toutes les tables d'une base de données MySQL au format CSV. Cette approche contourne les limitations de « mysqldump » et offre une plus grande flexibilité dans la manipulation des données de sortie.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn