我想编写一个shell脚本,首先打开sqlite,然后复制一个表,最后删除该表的内容。我怎样才能在 shell 脚本中做到这一点?
>>cd /var/www/dbs
>>sqlite3 ha.db
sqlite>>.timeout 2000
sqlite>>INSERT INTO table1 SELECT * FROM table2;
sqlite>>DELETE * FROM table2;
sqlite>>.quit
Run Code Online (Sandbox Code Playgroud)
这部分怎么写呢?
>>sqlite3 ha.db
sqlite>>INSERT INTO table1 ('a1','a2') VALUES ('1','2');
sqlite>>.quit
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
另请注意 的更正语法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
Run Code Online (Sandbox Code Playgroud)
如果您需要完全删除(而不仅仅是其内容),请更改DELETE FROM table1;为。DROP table1;table1