2017-06-20 37 views
0
#!/bin/bash 

echo " --- Enter the Database name ---" 
read databasename 

sqlite3 $databasename.db 


echo " --- Enter the Table details --- " 

CREATE TABLE CUSTOMER_DETAILS(cus_id INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE,cus_name TEXT NOT NULL,cus_domain TEXT UNIQUE, cus_status TEXT NOT NULL,Port INTEGER NOT NULL); 


#echo " --- Enter the total number of customer records ---" 
read cus_count 

for((i=0;i<=cus_count;i++)) 
do 
read c_name 
read c_domain 
read c_status 
read port 

INSERT INTO CUSTOMER_DETAILS(cus_name,cus_domain,cus_status) VALUES(\"$c_name\",\"$c_domain\",\"$c_status\",\"$port\"); 

done 

#echo " --- select the records from the table ---" 

select * from CUSTOMER_DETAILS; 

一旦我在终端执行这个脚本./demo_example.sh脚本将被执行,直到数据库创建后。它将结构在sqlite>查询不传递给sqlite。请帮助我如何我可以通过使用命令行SQLite的查询脚本my output here如何在该脚本中的数据库screation之后传递sqlite查询..?

+0

我answerd,但我有一些意见太:你插入有问题,因为您将4个元素插入3个字段。你的脚本不会告诉哪个输入正在等待,并且它必须检查端口是否是整数 – Tamar

+0

另外,请注意我在'create table'中所做的更改,我添加了'如果不存在',以防止重新创建表如果它存在 – Tamar

回答

0

你必须通过传递查询在命令行中使用非交互模式:

#!/bin/bash 

echo " --- Enter the Database name ---" 
read databasename 


echo " --- Enter the Table details --- " 

sqlite3 $databasename.db "CREATE TABLE IF NOT EXISTS CUSTOMER_DETAILS(cus_id INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE,cus_name TEXT NOT NULL,cus_domain TEXT UNIQUE, cus_status TEXT NOT NULL,Port INTEGER NOT NULL);" 


#echo " --- Enter the total number of customer records ---" 
read cus_count 

for((i=0;i<=cus_count;i++)) 
do 
read c_name 
read c_domain 
read c_status 
read port 

sqlite3 $databasename.db "INSERT INTO CUSTOMER_DETAILS(cus_name,cus_domain,cus_status, Port) VALUES(\"$c_name\",\"$c_domain\",\"$c_status\",\"$port\");" 

done 

#echo " --- select the records from the table ---" 

sqlite3 $databasename.db "select * from CUSTOMER_DETAILS;" 
+0

谢谢@ @ Tamar – Mahendranatarajan

+0

我有另一个dought。如果我使用一列作为一个唯一的约束。然后我再次重复相同的值,在那段时间我想打印声明,如“此客户名称已可用!请输入新的客户名称“我定义的位置以及如何在该脚本中定义。请帮助我 – Mahendranatarajan

+0

您可以选择名称,如果有结果未输入,或者添加唯一约束并在插入时检查错误,或者使用INSERT OR IGNORE' – Tamar