SQLiteドットコマンドを含むスクリプトを作成することは可能ですか(vis。.read file.sql; .separator ,; .import file.csv;
)?
SQLiteデータベースの構築と再構築を繰り返しており、データベースを再構築するたびに約24個のドットコマンドステートメントを入力する必要があります。これらのコマンドをスクリプトに入れて、SQLiteに読み込ませることができれば、本当にすばらしいと思います。
ドットコマンド(not SQLステートメント)をスクリプトに入れてSQLiteで実行する方法はありますか?
私はMac OS Xでbashを使用しています。
私は昨夜インターネットで答えを探しましたが何も見つかりませんでした。もちろん、今日この質問を投稿した後、私は再試行します-- そして適切な応答をほとんどすぐに見つけます。
その要点は?コマンドをテキストファイルに入れ、入力ファイル記述子を使用してそれをSQLiteに送信するか、bashスクリプトですべてをスクリプト化します。
sqlite3 database.db < commands.txt
#!/bin/bash --
sqlite3 -batch $1 <<"EOF"
CREATE TABLE log_entry ( <snip> );
.separator "\t"
.import logfile.log log_entry
EOF
そして、コマンドラインで:
import.sh database.db
別の方法として、私はより簡単だと考えていますが、.read
コマンドを使用することができます。 OS(Mac OS Xのターミナル)のコマンドラインから、次のように入力します。
sqlite3 yourdatabase.db ".read script_full_of_dot_commands"
sqlite3
を起動し、前述のデータベースを使用して、script_full_of_dot_commands
のすべてのコマンドを実行し、終了します。
たとえば、次のファイルがあるとします。
script_full_of_dot_commands:.commands
とSQL commands
の両方を含むファイル:
.read file.sql
.separator ","
.import file.csv t
.headers on
.separator "|"
SELECT name, a FROM t WHERE a < 2 ;
SELECT count(*) FROM t2;
file.sql:SQLコマンドのみを含むファイル。
DROP TABLE IF EXISTS t;
DROP TABLE IF EXISTS t2;
CREATE TABLE t (a integer PRIMARY KEY, name varchar);
CREATE TABLE t2 (b integer PRIMARY KEY);
file.csv:テーブルに入力するデータファイル
1,One
2,Two
3,Three
4,Four
実行の結果
sqlite3 yourdatabase.db ".read script_full_of_dot_commands"
です
name|a
One|1
count(*)
0
次も確認してください: コマンドラインからのSqlite3スクリプトの実行 StackOverflowから。
SQLiteドットコマンドを提供するもう1つのスクリプト可能な方法:
_sqlite3 db.sqlite < <(echo -e ".read file.sql \n.separator ',' \n.import file.csv")
_
SQLコマンドを混在させることもできます。 _echo -e "…"
_コマンドがSQLiteコマンドラインクライアントに書き込む方法で出力することを確認してください。
利点:
<<"EOF" … EOF
_のドキュメント構文は必要ありません。動作しますが、ターミナルにコピー&ペーストするときに、複数行のシェルコマンドを使用するのは面倒です。説明:
<(…)
を使用して、ディスク上のファイルを必要とせずにファイル入力を提供します。echo -e "\n"
_を使用して生成します。