web-dev-qa-db-ja.com

コマンドラインからのSqlite3スクリプトの実行

私はプロジェクトをscpするシェルスクリプトを書いており、その一部にはデータベース内のいくつかの重要なテーブルの転送が含まれます。

以下をファイルSQLTableTransferに保存しました:

.o MyTable1.sql;
.dump MyTable1;

.o MyTable2.sql;
.dump MyTable2;

.o MyTable3.sql;
.dump MyTable3;

とチャンスを取りました

$ sqlite3 SQLTableTransfer

しかし、これによりSqlite3シェルが開かれました。このようなスクリプトをコマンドラインから実行する正しい方法は何ですか?

18
rwolst

sqlite3プログラムに指定するパラメーターは、データベースファイル名です。

ファイルからコマンドを実行するには、入力をそのファイルにリダイレクトする必要があります。

$ sqlite3 mydatabase.db < SQLTableTransfer

または、そのファイルから読み取るように指示します。

$ sqlite3 mydatabase.db ".read SQLTableTransfer"
38
CL.

次のように、空間テーブルのリストを取得できます。

echo "SELECT f_table_name FROM geometry_columns;" | spatialite -noheader -silent your_db.sqlite

1
Micha

これを自分の.bashrcにダンプしたい怠惰な人のために:

### Execute an sqlite3 file on a given db
sql3-exec () {
  # TODO: write a  --help flag that doubles as error handling
  # TODO: Ensure that $1 is a db; Else display --help
  # TODO: Ensure that $2 is a .sql file; Else display --help
  # TODO: Probably store a backup (or at least a flag)...
  sqlite3 $1 ".read $2"
  true
}
0
T.Woody