次のように、sqliteクエリをcsvファイルにエクスポートするシェルスクリプトを作成しています。
#!/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"
スクリプトを実行すると、出力は「out.csv」に保存される代わりに画面に表示されます。コマンドラインで同じメソッドを実行していますが、シェルスクリプトがファイルへのデータのエクスポートに失敗する理由はわかりません。
何が間違っていますか?
行ごとにsqlite3
を個別に呼び出します。 select
が実行されるまでに、.out out.csv
は忘れられています。
試してください:
#!/bin/bash
./bin/sqlite3 ./sys/xserve_sqlite.db <<!
.headers on
.mode csv
.output out.csv
select * from eS1100_sensor_results;
!
代わりに。
リダイレクトを使用してスクリプトを呼び出すことができます。
$ your_script >out.csv
または、スクリプトの最初の行として次を挿入できます。
exec >out.csv
前者の方法では異なるファイル名を指定できますが、後者の方法では特定のファイル名に出力します。どちらの場合も、.output out.csv
行は無視できます。
ドットコマンドの代わりに、sqlite3コマンドオプションを使用できます。
sqlite3 -header -csv my_db.db "select * from my_table;" > out.csv
これにより、ワンライナーになります。
また、SQLスクリプトファイルを実行することもできます。
sqlite3 -header -csv my_db.db < my_script.sql > out.csv
つかいます sqlite3 -help
使用可能なオプションのリストを表示します。
最近、dbファイルからテーブルを取得し、csvファイルに変換できるシェルスクリプトを作成しました。
https://github.com/darrentu/convert-db-to-csv
スクリプトに関するご質問はお気軽に:)
質問はシェルスクリプトに関するものですが、sqlite3データベースからcsvファイルにデータを転送することについて悩んでいる人のほんの一部に役立つと思います。
SQLite Manager拡張機能を使用して、Firefoxブラウザーで非常に便利な方法を見つけました。
Firefoxでsqliteデータベースファイルに接続し(SQliteマネージャー->データベースに接続)、次にテーブル->テーブルをエクスポートします。クリックして試してみることができるオプションがさらに表示されます。
最後に、エクスポートすることを選択したテーブルを含むcsvファイルを取得します。