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

SQLite Discussion :

Mettre le résultat d'une commande dans un fichier


Sujet :

SQLite

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 14
    Points : 8
    Points
    8
    Par défaut Mettre le résultat d'une commande dans un fichier
    Bonjour,

    Je cherche une commande sqlite qui me permettrait de mettre le résultat d'une commande select dans un fichier .txt?

    Quelque chose comme spool par exemple?

    Merci d'avance de vos réponses.

  2. #2
    Membre actif

    Inscrit en
    Décembre 2004
    Messages
    169
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 169
    Points : 225
    Points
    225
    Par défaut
    Bonjour,

    Si tu utilises l'exécutable (sous Windows ou Linux) c'est très facile :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .output nomDuFichier.txt
    Voici par exemple comment on dump une table dans un fichier CSV facilement interprétable :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    .mod tabs
    .outout matable.csv
    select "colonne1","colonne2";
    select colonne1, colonne2 from maTable;
    .output stdout
    On remarque au passage le ".output stdout" qui rétabli la sortie à l'écran, ainsi que le premier select qui permet d'obtenir une ligne avec les noms des colonnes.

    Sinon, on peut également générer un document html avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    .mod html
    .outout matable.html
    select "<html><head></head><body><table>";
    select colonne1, colonne2 from maTable;
    select "</table></body></html>";
    .output stdout
    On a encore la possibilité de générer des commandes sql INSERT :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    .mod insert
    select colonne1, colonne2 from maTable;
    .output stdout
    Pour terminer, voici la liste des commandes disponible :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    .mode MODE ?TABLE?     Set output mode where MODE is one of:
                             csv      Comma-separated values
                             column   Left-aligned columns.  (See .width)
                             html     HTML <table> code
                             insert   SQL insert statements for TABLE
                             line     One value per line
                             list     Values delimited by .separator string
                             tabs     Tab-separated values
                             tcl      TCL list elements
    J'oubliais le meilleur pour la fin, dumper toute une base dans un gros fichier sql :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    .output sauvegarde.sql
    .dump
    .output stdout
    Bref, c'est facile et très utile.

    a+

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 14
    Points : 8
    Points
    8
    Par défaut
    Bonjour,

    Cette commande fonctionne très bien quand je la lance dans sqlite:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    .output fichier.txt
    select * from matable;
    .output stdout
    Mais lancé dans un script shell, mon fichier est bien créé mais pas rempli.

  4. #4
    Membre actif

    Inscrit en
    Décembre 2004
    Messages
    169
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 169
    Points : 225
    Points
    225
    Par défaut
    Bonjour,

    Peux tu nous en dire plus : Linux ou Windows, (je pense à Linux)
    et quel script shell ?

    merci
    a+

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 14
    Points : 8
    Points
    8
    Par défaut
    Je suis sur unix.

    Voici le bout de code qui ne fonctionne pas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    /usr/local/bin/sqlite3 test.db ".output fichier.txt"
    /usr/local/bin/sqlite3 test.db "select * from ma_table where status='NEW';"

  6. #6
    Membre actif

    Inscrit en
    Décembre 2004
    Messages
    169
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 169
    Points : 225
    Points
    225
    Par défaut
    Bonsoir,

    Effectivement, il y a un problème : tu lances deux commandes séparées ; il n'y a pas de lien entre elles.
    Pour que cela fonctionne, il faudrait que tu puisses écrire quelque chose comme:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /usr/LOCAL/bin/sqlite3 test.db ".output fichier.txt select * from ma_table where status='NEW';"
    Mais ce n'est pas possible, cette syntaxe provoquera une erreur.
    Par contre, si tu crées un fichier comme "instructions.sql" avec le script suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    .output fichier.txt
    select * from ma_table where status='NEW';
    .output stdout
    .quit
    Tu pourras alors l'appeler avec cette commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /usr/LOCAL/bin/sqlite3 test.db ".read instructions.sql"
    C'est exactement comme cela que je procède sur Windows pour de nombreux scripts.

    Bonne continuation,
    a+

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 14
    Points : 8
    Points
    8
    Par défaut
    Bonjour,

    Merci ça fonctionne impec.

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 14
    Points : 8
    Points
    8
    Par défaut

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

Discussions similaires

  1. bash: comment mettre le résultat d'une commande dans une variable
    Par helpcomm dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 03/10/2012, 23h26
  2. Réponses: 2
    Dernier message: 02/04/2009, 12h29
  3. Mettre le résultat d'une commande dans une variable
    Par daviddu54 dans le forum Scripts/Batch
    Réponses: 12
    Dernier message: 18/09/2008, 23h58
  4. [SQL] Comment je peux mettre les résultat d'une requete dans un fichier
    Par Maria1505 dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 10/12/2006, 21h44
  5. Ecrire le résultat d'une commande dans un fichier de l' OS
    Par Labienus dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 26/02/2004, 11h04

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