我正在使用2個數據庫說logdb.db和logdb2.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
什麼可能出錯?任何幫助將非常感激。
請注意:這是我能做的唯一方法,我不能創建觸發器。 (我試圖模擬一些實驗設置)。
所以這是我應該把我的test.sh腳本? – Technopolice 2014-12-04 11:48:53
是的;這是你的test.sh腳本中的一行,附加一個附加。 – 2014-12-04 19:27:18
我試過了。但現在它說數據庫被鎖定。正如我無法在「原始表格」中插入任何內容 – Technopolice 2014-12-05 07:25:18