2014-12-04 450 views
1

我正在使用2个数据库说logdb.dblogdb2.db通过shell脚本将值从一个数据库表插入到其他数据库表中

我创建了一个名为表原始在logdb.db SQLite数据库如如下:

CREATE TABLE Original (s_id INT PRIMARY KEY NOT NULL UNIQUE, s_author TEXT, s_timestamp INT, s_editedby TEXT, s_edited_timestamp INT, s_body_xml TEXT); 

同样,我创建了一个名为表编辑在logdb2.db sqlite的NonEdited数据库如下: CREATE TABLE已编辑(s_id INT PRIMARY KEY NOT NULL UNIQUE,s_author TEXT,s_timestamp INT,s_editedby TEXT,s_edited_timestamp INT,s_body_xml TEXT);

CREATE TABLE NonEdited (s_id INT PRIMARY KEY NOT NULL UNIQUE, s_author TEXT, s_timestamp INT, s_editedby TEXT, s_edited_timestamp INT, s_body_xml TEXT); 

然后接上logdb2.db到logdb.db命令行如下:

$ sqlite3 logdb.db 
$ ATTACH DATABASE '/home/sid/Desktop/Logging/logdb2.db' as DB2; 

现在,表原件被插入或通过其他用户更新,所以这取决于是被插入,我想将这些值插入Edited或NonEdited表。基本上我是针对原始表的最后几行。所以,我创建了一个名为test.sh一个shell脚本文件,内容如下:

sqlite3 /home/sid/Desktop/Logging/logdb.db 'insert or replace into DB2.Edited select * from (select * from Original order by s_id desc limit 10) where s_editedby is NOT NULL order by s_id;' 

sqlite3 /home/sid/Desktop/Logging/logdb.db 'insert or ignore into DB2.NonEdited select * from (select * from Original order by s_id desc limit 10) where s_editedby is NULL order by s_id;' 

然后我运行test.sh如下:

watch -n 1 ./test.sh 

但我得到的以下错误,当我运行上面的命令说,

Error: no such table: DB2.Edited 
Error: no such table: DB2.NonEdited 

在哪里,我在做什么错?

请注意,当所有三个表都在同一个数据库中,我不会得到这个问题,它完美的作品。我检查了logdb.db中附加的数据库,它是正确的:

sqlite> .databases 
seq name    file              
--- --------------- ---------------------------------------------------------- 
0 main    /home/sid/Desktop/Logging/logdb.db       
2 DB2    /home/sid/Desktop/Logging/logdb2.db      
sqlite> .tables 
DB2.Edited  DB2.NonEdited Original 

什么可能出错?任何帮助将非常感激。

请注意:这是我能做的唯一方法,我不能创建触发器。 (我试图模拟一些实验设置)。

回答

0

附件不是永久的;当你重新打开数据库时,你必须重新做它们:

sqlite3 .../logdb.db 'ATTACH "..."; INSERT ...;' 
+0

所以这是我应该把我的test.sh脚本? – Technopolice 2014-12-04 11:48:53

+0

是的;这是你的test.sh脚本中的一行,附加一个附加。 – 2014-12-04 19:27:18

+0

我试过了。但现在它说数据库被锁定。正如我无法在“原始表格”中插入任何内容 – Technopolice 2014-12-05 07:25:18

相关问题