2011-04-21 165 views
5

我想在ubuntu10.10操作系统上使用A SHELL SCRIPT创建一个新的sqlite数据库....任何想法?创建一个shell脚本来在ubuntu中运行sqlite命令

我试着用下面的代码“create.sh”文件...

#!/bin/bash 
sqlite ex3.db 
create table t1(f1 integer primary key,f2 text) 

不是运行从termminal一个./create.sh,但它使我 sqlite的>提示符下......我没看见创建DB EX3任何地方..

请帮助...

回答

4
#!/bin/bash 

sqlite3 ex3.db "create table t1(f1 integer primary key,f2 text)" 

应该工作,我认为,不幸的是,没能马上检查。

+1

除非您想要将变量中的命令输出捕获到外壳脚本中,否则不需要反引号。 OTOH,你可以**通过类似的命令行给SQLite小块SQL,它仍然可以与反引号一起工作。尽管如此,您可能想要使用标准输入来处理更复杂的SQL块。 – 2011-04-21 08:21:26

+1

这对我有用...没有感谢弗拉德Khomich .. – Roopa 2011-04-23 04:40:01

3

你要养活你的SQL DDL命令通过标准的输入对于SQLite:

#!/bin/bash 
echo 'create table t1(f1 integer primary key,f2 text);' | sqlite ex3.db 
5

一种实现多种方式,可以使用SQL_ENTRY_TAG_N

#!/bin/bash 
sqlite3 mydatabase <<SQL_ENTRY_TAG_1 
SELECT * FROM sqlite_master; 
SQL_ENTRY_TAG_1 

看到snippet的细节

0

CREATEINSERTcreate.sh的示例:

#!/bin/bash 
DB_NAME=ex3.sqlite 
DB_TABLE=t1 

sqlite3 $DB_NAME << EOF 

DROP TABLE IF EXISTS $DB_TABLE; 

CREATE TABLE $DB_TABLE (
    "f1" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, 
    "f2" TEXT NOT NULL DEFAULT "f2-text" 
); 

INSERT INTO $DB_TABLE (f1, f2) VALUES (1, "text 1"); 
INSERT INTO $DB_TABLE (f1, f2) VALUES (2, "text 2"); 

EOF 
相关问题