2017-02-15 5 views
1

Я вижу много примеров, показывающих, как использовать sqlite3 интерактивную оболочку, например:* Неинтерактивный * Использование SQLite3 от Баш скрипт

$ 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» по телефону «sqlite3 «как фоновый процесс - или он почти всегда работает в фоновом режиме на MacOS и Linux?

+0

Например, создайте таблицу tbl1 (один varchar (10), two smallint); – zon7

+1

Нечего просыпаться, [SQLite3 не использует сервер/демон] (https://sqlite.org/serverless.html). –

+0

спасибо за эту информацию. хорошо знать. на отдельном примечании, мой ответ на самом деле не работает - он по-прежнему интерактивен. –

ответ

0

Похоже, это так просто, как

#!/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/

+0

ok, я подтвердил, что это работает - это неинтерактивно, пока существует test.db –

1

Вы можете отключить интерактивный режим с помощью -batch опции:

sqlite3 -batch test.db "create table n (id INTEGER PRIMARY KEY,f TEXT,l TEXT);" 
2

Хотя выше должен работать, я думаю, что это лучше не ссылаться на 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 для соображений переносимости.