SQLite: Comment enregistrer le résultat d'une requête sous forme de fichier CSV?


Réponses:


249

D' ici et le commentaire de d5e5:

Vous devrez basculer la sortie en mode csv et passer en sortie de fichier.

sqlite> .mode csv
sqlite> .output test.csv
sqlite> select * from tbl1;
sqlite> .output stdout

4
où ce fichier est-il enregistré?
RayLoveless

34
Il est imprimé sur la sortie standard, c'est-à-dire sur votre écran probablement. Pour enregistrer la sortie dans un fichier: sqlite> .output test.csv Pour restaurer les résultats d'impression à l'écran: sqlite> .output stdout
d5e5

1
Des pointeurs sur où je peux trouver comment faire cela avec la bibliothèque Node?
kuanb

2
Utilisez sqlite> .output C: /Users/jdoe/Documents/output.csv si vous souhaitez utiliser un chemin spécifique.
Dustin

Salut! J'ai fait ça. Bien que ma requête ait parfaitement fonctionné, la sortie du fichier est vide. Est-ce que quelqu'un sait pourquoi?
Valeria Lobos Ossandón

144

Pour inclure les noms de colonnes dans votre fichier csv, vous pouvez effectuer les opérations suivantes:

sqlite> .headers on
sqlite> .mode csv
sqlite> .output test.csv
sqlite> select * from tbl1;
sqlite> .output stdout

Pour vérifier les modifications que vous avez apportées, vous pouvez exécuter cette commande:

sqlite> .show

Production:

echo: off   
explain: off   
headers: on   
mode: csv   
nullvalue: ""  
output: stdout  
separator: "|"   
stats: off   
width: 22 18 

3
Merci d'avoir montré comment obtenir les noms de colonnes! Cette réponse doit être plus élevée.
Stan James

Notez que sqlite3 ajoute la sortie à la fin du fichier sans effacement du contenu précédent.
kupgov

1
Mais chaque .output filename.csvexécution crée ou efface le fichier.
kupgov

25

Bonnes réponses de gdw2 et d5e5. Pour simplifier les choses, voici les recommandations rassemblées en une seule série de commandes:

sqlite> .mode csv
sqlite> .output test.csv
sqlite> select * from tbl1;
sqlite> .output stdout

23

En plus des réponses ci-dessus, vous pouvez également utiliser .oncede la même manière que .output. Cela génère uniquement la requête suivante dans le fichier spécifié, de sorte que vous n'ayez pas à suivre avec.output stdout .

Donc dans l'exemple ci-dessus

.mode csv
.headers on
.once test.csv
select * from tbl1;

1

Sinon, vous pouvez le faire en une seule ligne (testé dans win10)

sqlite3 -help
sqlite3 -header -csv db.sqlite 'select * from tbl1;' > test.csv

Bonus: utilisation de PowerShell avec l'applet de commande et le tube (|).

get-content query.sql | sqlite3 -header -csv db.sqlite > test.csv

où query.sql est un fichier contenant votre requête SQL

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.