web-dev-qa-db-ja.com

シェルスクリプトを使用してsqliteからcsvにエクスポートする

次のように、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」に保存される代わりに画面に表示されます。コマンドラインで同じメソッドを実行していますが、シェルスクリプトがファイルへのデータのエクスポートに失敗する理由はわかりません。

何が間違っていますか?

82
Rorro

sqlite3

行ごとに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;
!

代わりに。

sh/bashメソッド

リダイレクトを使用してスクリプトを呼び出すことができます。

$ your_script >out.csv

または、スクリプトの最初の行として次を挿入できます。

exec >out.csv

前者の方法では異なるファイル名を指定できますが、後者の方法では特定のファイル名に出力します。どちらの場合も、.output out.csv行は無視できます。

121
tzot

ドットコマンドの代わりに、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使用可能なオプションのリストを表示します。

158
Hollister

最近、dbファイルからテーブルを取得し、csvファイルに変換できるシェルスクリプトを作成しました。

https://github.com/darrentu/convert-db-to-csv

スクリプトに関するご質問はお気軽に:)

6
DarrenNEEDSHELP

質問はシェルスクリプトに関するものですが、sqlite3データベースからcsvファイルにデータを転送することについて悩んでいる人のほんの一部に役立つと思います。

SQLite Manager拡張機能を使用して、Firefoxブラウザーで非常に便利な方法を見つけました。

Firefoxでsqliteデータベースファイルに接続し(SQliteマネージャー->データベースに接続)、次にテーブル->テーブルをエクスポートします。クリックして試してみることができるオプションがさらに表示されます。

最後に、エクスポートすることを選択したテーブルを含むcsvファイルを取得します。

0
infoclogged