2016-12-06 222 views
2

我嘗試使用命令行從sql文件導入表數據。 此數據內容重複在url如何執行SQL查詢跳過錯誤?

但表中的字段url是唯一的。所以當我試圖插入數據時,我得到錯誤「Dublicate entry」

如何導入所有數據跳過此錯誤?

+0

您應該可能導入到新表中,並且只插入唯一記錄。 – HoneyBadger

+2

顯示您正在使用的代碼。 –

+0

如何執行此操作?創建一個表以及如何插入唯一的行? – MisterPi

回答

1

您可以使用--force(-f)標誌。

mysql -u userName -p -f -D dbName < script.sql 

man mysql

·--force,-f

繼續即使出現SQL錯誤。

0

如何導入所有數據跳過此錯誤?

刪除索引的時間是 - >運行批量插入 - >重新創建索引回

+0

你的意思是刪除唯一索引嗎? – MisterPi

+0

'重新創建索引'將失敗 –

0

如果使用insert時,您可以使用ignore erroron duplicate key update(可取的,因爲它只是忽略重複鍵錯誤)忽略錯誤。

如果您使用的是load data infile,那麼您可以使用ignore關鍵字。正如documentation描述:

如果指定IGNORE,即重複上 唯一鍵值的現有行行都將被丟棄。有關更多信息,請參閱IGNORE關鍵字和嚴格SQL模式的比較 。

或者說,我通常會做:

  • 將數據加載到一個臨時表。
  • 驗證登臺表並僅將適當的數據加載到最終表中。
1
  • 創建臨時表具有相同的結構作爲目標 表,但沒有約束(包括唯一索引)。
  • 手動檢查重複項,並決定您想要如何在重複行/合併行之間選擇 。
  • 編寫相應的查詢並使用「insert into ... select ...」。