Je crée un script Shell pour exporter une requête sqlite dans un fichier csv, comme ceci:
#!/bin/bash
./bin/sqlite3 ./sys/xserve_sqlite.db ".headers on"
./bin/sqlite3 ./sys/xserve_sqlite.db ".mode csv"
./bin/sqlite3 ./sys/xserve_sqlite.db ".output out.csv"
./bin/sqlite3 ./sys/xserve_sqlite.db "select * from eS1100_sensor_results;"
./bin/sqlite3 ./sys/xserve_sqlite.db ".exit"
Lors de l'exécution du script, la sortie apparaît à l'écran au lieu d'être enregistrée dans "out.csv". Cela fonctionne de la même manière avec la ligne de commande, mais je ne sais pas pourquoi le script Shell ne parvient pas à exporter les données dans le fichier.
Qu'est-ce que je fais mal?
Vous avez un appel distinct à sqlite3
pour chaque ligne; au moment où votre select
s'exécute, votre .out out.csv
a été oublié.
Essayer:
#!/bin/bash
./bin/sqlite3 ./sys/xserve_sqlite.db <<!
.headers on
.mode csv
.output out.csv
select * from eS1100_sensor_results;
!
au lieu.
Vous pouvez soit appeler votre script avec une redirection:
$ your_script >out.csv
ou vous pouvez insérer les éléments suivants en première ligne de votre script:
exec >out.csv
La première méthode vous permet de spécifier différents noms de fichiers, tandis que la seconde génère un nom de fichier spécifique. Dans les deux cas, la ligne .output out.csv
peut être ignorée.
Au lieu des commandes point, vous pouvez utiliser les options de commande sqlite3:
sqlite3 -header -csv my_db.db "select * from my_table;" > out.csv
Cela en fait un one-liner.
En outre, vous pouvez exécuter un fichier de script SQL:
sqlite3 -header -csv my_db.db < my_script.sql > out.csv
Utilisez sqlite3 -help
pour voir la liste des options disponibles.
J'ai récemment créé un script Shell qui pourra extraire les tables d'un fichier db et les convertir en fichiers csv.
https://github.com/darrentu/convert-db-to-csv
N'hésitez pas à me poser des questions sur mon script :)
Bien que la question concerne le script Shell, je pense que cela aidera peu de ceux qui se soucient simplement de transférer les données de la base de données sqlite3 dans un fichier csv.
J'ai trouvé un moyen très pratique de le faire avec le navigateur Firefox utilisant l'extension SQLite Manager.
Connectez-vous simplement à votre fichier de base de données sqlite dans firefox (Gestionnaire SQlite -> connecter à la base de données), puis Tableau -> Exporter le tableau. Vous serez servi avec plus d'options que vous pouvez simplement cliquer et essayer ....
En fin de compte, vous obtenez un fichier csv avec la table que vous avez choisie d’être exportée.