シェルスクリプトでsqliteコマンドを書くには?

シェルスクリプトでsqliteコマンドを書くには?

まず、sqliteを開いてからテーブルをコピーし、最後にテーブルの内容を削除するシェルスクリプトを作成したいと思います。シェルスクリプトでこれをどのように実行できますか?

>>cd /var/www/dbs
>>sqlite3 ha.db
sqlite>>.timeout 2000
sqlite>>INSERT INTO table1 SELECT * FROM table2;
sqlite>>DELETE * FROM table2;
sqlite>>.quit

この部分はどのように書きますか?

>>sqlite3 ha.db
sqlite>>INSERT INTO table1 ('a1','a2') VALUES ('1','2');
sqlite>>.quit

ベストアンサー1

sqlite3標準入力からコマンドを読みます。つまり、インタラクティブではないファイルまたはコマンドラインからSQLを入力できます。sqlite3入力が終了すると自動的に終了するため、非.quit対話式の使用には必要ありません。

たとえば、

#!/bin/sh

sqlite3 /var/www/dbs/ha.db <<'END_SQL'
.timeout 2000
INSERT INTO table1 SELECT * FROM table2;
DELETE FROM table2;
END_SQL

また、修正された構文も参照してくださいDELETE

table2データベースにも作成する必要がある場合:

#!/bin/sh

sqlite3 /var/www/dbs/ha.db <<'END_SQL'
CREATE TABLE IF NOT EXISTS table2 AS SELECT * FROM table1;
INSERT INTO table2 SELECT * FROM table1;
DELETE FROM table1;
END_SQL

内容だけでなく完全に削除する必要がある場合DELETE FROM table1;に変更してください。DROP table1;table1

おすすめ記事