私はプロジェクトをscpするシェルスクリプトを書いており、その一部にはデータベース内のいくつかの重要なテーブルの転送が含まれます。
以下をファイルSQLTableTransfer
に保存しました:
.o MyTable1.sql;
.dump MyTable1;
.o MyTable2.sql;
.dump MyTable2;
.o MyTable3.sql;
.dump MyTable3;
とチャンスを取りました
$ sqlite3 SQLTableTransfer
しかし、これによりSqlite3シェルが開かれました。このようなスクリプトをコマンドラインから実行する正しい方法は何ですか?
sqlite3
プログラムに指定するパラメーターは、データベースファイル名です。
ファイルからコマンドを実行するには、入力をそのファイルにリダイレクトする必要があります。
$ sqlite3 mydatabase.db < SQLTableTransfer
または、そのファイルから読み取るように指示します。
$ sqlite3 mydatabase.db ".read SQLTableTransfer"
次のように、空間テーブルのリストを取得できます。
echo "SELECT f_table_name FROM geometry_columns;" | spatialite -noheader -silent your_db.sqlite
これを自分の.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
}