Export SQL et noms de colonnes
par
, 30/04/2022 à 13h59 (384 Affichages)
Vous avez des données à extraire massivement de votre base données, SELECT ... INTO OUTFILE est tout indiqué. La première déconvenue sera l'absence des noms de colonnes. Voici comment y remédier.
Travaillons sur une table cities, un extrait du Code Officiel Géographique :
Si vous effectuez une requête comme :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 | id | type | code | name | tncc | +-------+------+-------+-------------------------+------+ | 1 | COM | 01001 | L'Abergement-Clémenciat | 5 | | 2 | COM | 01002 | L'Abergement-de-Varey | 5 | | 3 | COM | 01004 | Ambérieu-en-Bugey | 1 | ... | 37901 | COM | 97617 | Tsingoni | 0 |
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 SELECT ALL id, type, code, name, tncc FROM cities INTO OUTFILE '/var/lib/mysql-files/cities.csv' FIELDS TERMINATED BY ',' ENCLOSED BY '"';
Vous obtiendrez le CSV suivant :
Et remarquerez que les colonnes ne sont pas nommées, ce qui est une perte d'information et peut poser des problèmes de compréhension. En effet, que représentent les derniers chiffres de chaque ligne ? Rien n'indique qu'il s'agit des TNCC (Type de Nom en Clair).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 "1","COM","01001","L'Abergement-Clémenciat","5" "2","COM","01002","L'Abergement-de-Varey","5" "3","COM","01004","Ambérieu-en-Bugey","1" ... "37901","COM","97617","Tsingoni","0"
Nommer systématiquement les colonnes est une bonne pratique. Voici comment nommer les colonnes d'un extract :
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 (SELECT ALL 'id', 'type', 'code', 'name', 'tncc') UNION ALL (SELECT ALL id, type, code, name, tncc FROM cities) -- Attention tout tri doit être effectué *dans* cette 2nde sous-requête INTO OUTFILE '/var/lib/mysql-files/cities.csv' FIELDS TERMINATED BY ',' ENCLOSED BY '"';
La 1re sous-requête permet d'extraire des littéraux, ici des noms de colonnes. La 2nde sous-requête les données. Le résultat produit sera :
Et voilà comment effectuer un extract SQL muni d'une en-tête
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 "id","type","code","nom","tncc" "1","COM","01001","L'Abergement-Clémenciat","5" "2","COM","01002","L'Abergement-de-Varey","5" "3","COM","01004","Ambérieu-en-Bugey","1" ... "37901","COM","97617","Tsingoni","0"![]()