Hello,
Je m'étonne qu'encore aujourd'hui, MySQL/MariaDB ne semblent toujours par proposer l'option d'inclure le nom des colonnes comme premier enregistrement lors d'un export, et qu'il faille manuellement les inclure via un UNION (des dizaines de colonnes dans mon cas…)
Source : https://hevodata.com/learn/mysql-export-to-csv/#headers
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 (SELECT 'columnHeading', ...) UNION (SELECT column, ... FROM tableName INTO OUTFILE 'path-to-file/outputFile.csv' FIELDS ENCLOSED BY '"' TERMINATED BY ',' ESCAPED BY '"' LINES TERMINATED BY 'n')
Vous confirmez ?
Merci.
--
Edit : Mmm…
---
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 MariaDB [myDB]> (SELECT 'id' FROM posts) UNION (SELECT id from posts INTO OUTFILE '/tmp/posts.csv' FIELDS TERMINATED BY ',' FIELDS ENCLOSED BY '"' FIELDS ESCAPED BY '"' LINES TERMINATED BY '\n'); ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'INTO OUTFILE '/tmp/posts.csv' FIELDS TERMINATED BY ',' FIELDS ENCLOSED ...' at line 1
Ediit : Un peu de kung-fu
Puis fusionner ça avec le fichier CSV
Code : Sélectionner tout - Visualiser dans une fenêtre à part mysql -u root -pblah myDB -e"SHOW COLUMNS FROM mytable" | awk '(NR>1){ print $1 }' | sed -z 's/\n/,/g;s/,$/\n/'
---
Edit : Solution de contournement :
1. Faire un dump : mysqldump -u root -ptest myDB > dump_myDB.sql
2. Convertir et importer dans SQLite ./mysql2sqlite dump_myDB.sql | sqlite3 dump_myDB.sqlite
3. Exporter en CSV : sqlite3 dump_myDB.sqlite
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 .mode csv .header on .output mytable.csv select * from mytable; .quit
Partager