2016-08-25 62 views
0

我想了解如何sqoop出口works.I在MySQL有一個表網站,其中包含兩列名和網址,幷包含兩排Sqoop出口插入重複條目

1,www.yahoo.com 
2,www.gmail.com 

表沒有主鍵

,當我從HDFS通過執行以下導出項到MySQL網站TABLE命令其插入重複條目

我有下面的條目在HDFS

1,www.one.com 
2,www.2.com 
3,www.3.com 
4,www.4.com 

sqoop export --table site --connect jdbc:mysql://localhost/loudacre -- username training --password training --export-dir /site/ --update-mode allowinsert --update-key id

因此,而不是更新現有的ID其再次插入重複ID(指1項,1 www.one.com和1 www.yahoo.com)

即使我刪除在--update鍵的結果是same.Does它的發生,因爲該表沒有主鍵

我在Cloudera的快速入門使用sqoop 1.4.5 VM

任何幫助嗎?

回答

2

按Sqoop docs

MySQL將嘗試插入新行,如果插入失敗,重複的唯一密鑰錯誤這反而更新相應的行。

所以,要麼--update-key欄應該是主鍵或在其上有唯一索引


內部,sqoop會這樣

INSERT INTO table (id,email) VALUES (1,www.one.com) ON DUPLICATE KEY UPDATE email=www.one.com

等所有其他值創建查詢。

+0

是的,當id = 1時,它會更新行,但我不明白爲什麼它會再次插入一個新的條目id = 1.Am我做錯了什麼。 –

+0

@Deepak_Spark_Beginner正如你所說'id'不是主鍵。你是否在'id'字段創建了唯一索引? –

+0

沒有我的桌子沒有that.I將創建它,然後將try.Thanks很多的快速響應 –