簡體   English   中英

來自 bash 腳本的非交互式 SQLite3 用法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM