まず、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