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/#headersCode:
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:
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 CSVCode: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:
1
2
3
4
5 .mode csv .header on .output mytable.csv select * from mytable; .quit