我正嘗試將數據從一個表遷移到同一個數據庫中的另一個表。問題是我從中導入的表中的記錄可能有不同的數據,但包含主鍵的相同自動遞增ID,因此當我嘗試導入它時,它顯然說它由於重複而無法寫入鍵。當檢測到重複時,將auto_increment id替換爲下一個空閒標識
我試着做下面的查詢,以避開這個:
INSERT INTO my_table SELECT * FROM my_temp_table ON DUPLICATE KEY UPDATE my_table.LogID=LAST_INSERT_ID(my_table.LogID);
該查詢似乎工作和MySQL表示,它已經寫10000行的表,但它實際上沒有。
如何從my_temp_table插入所有行,但插入的唯一自動遞增ID?按要求對錶更
UPDATE
有點信息。兩個表格顯然都是相同的定義。該表包含一個LogID(這是自動增量主鍵),一個時間戳和其他一些字段。數據庫表中包含7月1日至3日的一些時間戳,但不是應有的所有內容。
有具有正確信息的舊的數據庫服務器,所以我做
CREATE TABLE my_temp_table LIKE my_table
然後導入1日至7月3日到本我的臨時表像這樣
INSERT INTO my_temp_table SELECT * FROM my_table WHERE Date BETWEEN '2017-07-01' AND '2017-07-03'
這然後mysqldump'ed並複製到新的服務器並導入。
在新的服務器然後我刪除了從1日至7月3日的所有記錄如下:
DELETE FROM my_table WHERE Date BETWEEN '2017-07-01' AND '2017-07-03'
現在我需要從我的temp_table得到的7月1日至3日的數據爲MY_TABLE所以數據庫擁有它在這兩個日期之間所需的所有信息。
由於my_table在7月的原因中插入了其他記錄,並且舊服務器在7月份的前3天內正常工作,因此舊服務器添加了更多數據,因此舊服務器記錄具有與新服務器衝突的auto_increment ID我需要將這些行從舊服務器導入到新服務器,但確保日誌ID是新的,因此可以插入。
我已經添加了更多信息來解釋我正在努力實現 – Boardy