[英]Non-interactive SQLite3 usage from bash script
我看到很多例子展示了如何使用 sqlite3 交互式 shell,例如:
$ sqlite3
$ sqlite3> SELECT * from x;
但我正在尋找一種在 SQLite3 數據庫中使用 bash 腳本(即非交互方式)創建表的方法。
例如,以下似乎不起作用,它仍然是交互式的:
#!/bin/bash
sqlite3 test.db "create table n (id INTEGER PRIMARY KEY,f TEXT,l TEXT);"
sqlite3 test.db "insert into n (f,l) values ('john','smith');"
sqlite3 test.db "select * from n";
雖然以上應該可以工作,但我認為最好不要多次調用 sqlite3,因此我認為以下是更可取的:
#!/bin/sh
sqlite3 test.db <<EOF
create table n (id INTEGER PRIMARY KEY,f TEXT,l TEXT);
insert into n (f,l) values ('john','smith');
select * from n;
EOF
請注意,除非您真的需要使用 bash,否則出於可移植性原因,您應該更喜歡“/bin/sh”作為您的 shebang。
看起來很簡單
#!/bin/bash
sqlite3 test.db "create table n (id INTEGER PRIMARY KEY,f TEXT,l TEXT);"
sqlite3 test.db "insert into n (f,l) values ('john','smith');"
sqlite3 test.db "select * from n;"
來自https://mailliststock.wordpress.com/2007/03/01/sqlite-examples-with-bash-perl-and-python/
您可以使用 -batch 選項禁用交互模式:
sqlite3 -batch test.db "create table n (id INTEGER PRIMARY KEY,f TEXT,l TEXT);"
這也有效
sqlite3 "${DB_FILE_NAME}" < data_model.sql
sqlite3 "${DB_FILE_NAME}" < dml.sql
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.