我使用MySQL GUI通過選擇某些表並將從備份轉儲生成的INSERT
語句運行到空表(新模式)中,將某些站點遷移到新版本的CMS。有在不新一個存在的舊錶數列,所以腳本這樣的錯誤停止:在「字段列表」有沒有辦法忽略INSERT上不存在的列?
腳本行
櫻桃挑選所需的列導出,或編輯轉儲文件將是太繁瑣和耗時。要解決這個問題,我會在生成錯誤時創建未使用的列,通過運行查詢導入數據,然後在完成該表時刪除未使用的列。我看過INSERT IGNORE
,但這似乎是忽略重複鍵(不是我要找的)。
有什麼辦法可以在忽略目標表中不存在的列的同時執行INSERT
?我正在尋找「無痛」的東西,就像現有的一些SQL功能一樣。
爲了澄清,我正在處理一堆備份文件,並將數據導入本地數據庫進行測試,然後再將其移至活動服務器。該種方案的例子中,我希望:
-- Don't try to insert data from columns that don't exist in "new_table"
INSERT INTO `new_table` {IGNORE UNKNOWN COLUMNS} (`id`, `col1`, `col2`) VALUES
(1, '', ''),
(2, '', '');
如果這樣的事情是不存在的,我很樂意接受,作爲一個答案,並繼續使用我目前的解決方法。
如果字段列表提到不存在的列,它可能包含偶然匹配的列。無論你知道什麼,它可能是表名是錯誤的,使你無意中在無效的表中插入無效的數據。這是一個非常糟糕的主意。如果插入錯誤,讓它失敗。 – GolezTrol
如果使用不當或「意外」,有很多危險的查詢是危險的,我不明白爲什麼這會是任何異常。 –
當然,但查詢中不存在的列表示直接錯誤,並且會失敗。 INSERT也不例外。 SELECT查詢也會失敗。 – GolezTrol