2014-12-04 43 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

相關問題