IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

[Export] Inclure le nom des colonnes ? [MariaDB]


Sujet :

Requêtes MySQL

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 123
    Par défaut [Export] Inclure le nom des colonnes ?
    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…)

    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')
    Source : https://hevodata.com/learn/mysql-export-to-csv/#headers

    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

    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/'
    Puis fusionner ça avec le fichier CSV

    ---
    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

  2. #2
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 823
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 823
    Par défaut
    Salut fredtheman.

    Il faudra prendre l'habitude de parler de lignes et de colonnes et non d'enregistrements et de champs.

    Citation Envoyé par fredtheman
    Vous confirmez ?
    Ben non, car ce que tu exportes à la structure d'un fichier.

    Citation Envoyé par fredtheman
    Edit : Mmm…
    Pourquoi mettre dans la colonne id, la chaine de caractères "id" ?

    La bonne syntaxe sous windows est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    --------------
    SELECT 'id' as id
                   UNION
                  SELECT 1    as id
                   UNION
                  SELECT 2    as id
            INTO OUTFILE 'E:\\30.MySql\\01.Exercices\\Ex_24\\fichier.txt'
    FIELDS TERMINATED BY '\r\n'
             ENCLOSED BY ''
     LINES TERMINATED BY '\r\n'
    --------------
     
    Appuyez sur une touche pour continuer...
    Je ne comprends pas l'intérêt de mettre le nom des colonnes dans l'OUTFILE ?

    L'OUTFILE sert à créer un fichier sequentiel de type ".csv".
    Si tu l'utilises pour recharger une autre table, tu vas le faire avec un "load data local infile ...".
    Et tu seras obligé d'ignorer cette première ligne qui ne sera pas au bon format.

    Citation Envoyé par fredtheman
    Edit : Solution de contournement :
    Désolé, mais je ne suis pas devin. Pour faire quoi ?
    Précises tout de même le context dans lequel tu te trouves.

    Cordialement.
    Artemus24.
    @+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 23/02/2012, 22h17
  2. Export vers Excel avec les noms des colonnes
    Par JauB dans le forum AS/400
    Réponses: 7
    Dernier message: 04/02/2011, 09h18
  3. [JTable] les noms des colonnes de s'affichent pas
    Par macben dans le forum Composants
    Réponses: 6
    Dernier message: 25/04/2008, 11h03
  4. [Firebird 1.5] nom des colonnes d'une table
    Par c0rwyn dans le forum SQL
    Réponses: 4
    Dernier message: 03/09/2004, 14h44
  5. [SWING][JTable]Cacher noms des colonnes
    Par Antunes dans le forum Composants
    Réponses: 2
    Dernier message: 28/06/2004, 11h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo