我有一個文件,我已成功更新到表。現在,我需要以數據不會重複的方式再次執行此操作。將非重複數據插入表
我的目標表:
mysql> show columns from MARCAS;
+----------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+----------------+
| ID_MARCA | int(11) | NO | PRI | NULL | auto_increment |
| MARCA | varchar(50) | YES | | NULL | |
+----------+-------------+------+-----+---------+----------------+
所以我所做的就是從文件到它創建一個臨時表和加載數據。使用
代碼:
CREATE TEMPORARY TABLE tempe LIKE marcas;
LOAD DATA LOCAL INFILE myfile.txt
INTO TABLE MARCAS
FIELDS TERMINATED BY '#' ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(ID_MARCA, MARCA, @ignore1, @ignore2, @ignore3);
所有在這裏很好。當我試圖變得聰明並且使用'ON DUPLICATE KEY'(例如它在這裏被取消)從臨時表插入數據到MARCAS表中時,問題就開始了,因爲數據不會重複出現。我使用的代碼是:
INSERT into MARCAS select * from TEMPE on duplicate key update MARCA=values(MARCA);
結果:
mysql> select * from MARCAS;
+----------+---------+
| ID_MARCA | MARCA |
+----------+---------+
| 1 | PICASSA |
| 2 | PICASSA |
| 3 | C4 |
| 4 | C4 |
| 5 | C3 |
| 6 | C3 |
| 7 | C2 |
| 8 | C2 |
| 9 | MONDEO |
| 10 | MONDEO |
| 11 | S-MAX |
| 12 | S-MAX |
| 13 | CIVIC |
| 14 | CIVIC |
| 15 | ACCORD |
| 16 | ACCORD |
| 17 | CLS |
| 18 | 900 |
| 19 | LEON |
| 20 | LEON |
| 21 | IBIZA |
| 22 | IBIZA |
| 23 | 307 |
| 24 | 307 |
| 25 | 308 |
| 26 | 308 |
| 27 | 407 |
| 28 | 407 |
| 29 | 408 |
| 30 | 408 |
| 31 | MEGANE |
| 32 | MEGANE |
| 33 | PASSAT |
| 34 | PASSAT |
| 35 | GOLF |
| 36 | GOLF |
| 37 | TOUAREG |
+----------+---------+
沒有深刻的印象與自己。我究竟做錯了什麼?
感謝略知一二!像往常一樣非常有用。 :-)我還注意到我的數據正在從文件的第二列加載。首先被完全忽略。有什麼理由呢? – CNB
,很高興能有所幫助。所有與您的項目最好 – e4c5
沒關係,發現我錯了。 :-) – CNB