2010-08-15 131 views
1

我有兩個表,'user'和'account'具有1:1的關係。MySQL嵌入INSERT與ON DUPLICATE KEY UPDATE

帳戶有FK USER_ID和帳戶具有獨特的ACCOUNT_ID

我必須採取一個CSV上傳多達5萬行,每一行之一:

  • 插入數據作爲新行(在考慮和用戶)如果account.account_number是唯一
  • 更新帳戶錶行,如果account.account_number已經存在
  • 如果account.account_number犯規的CSV存在刪除賬號和用戶的行。

到目前爲止,我正在處理帳戶表,因爲這有account.account_number col來檢查唯一性,但向此表添加新行依賴於已將新行中的user_id添加到用戶表。

INSERT INTO account (account_number, trans_rate....etc) VALUES (multiple data sets),(...),(....) ON DUPLICATE KEY UPDATE ...etc 

因此,處理帳戶表,根據需要進行更新/插入。但是,當然,user_id列留空,因爲用戶記錄尚未創建。

我想知道是否可以在上面的語句中嵌入新用戶行的插入語句,但我不知道從哪裏開始......還有一點谷歌搜索沒有讓我相信它的實際可能迄今。

或者任何其他的想法?..

我可以看到如何,每行幾個查詢做到這一點,但我關心的數據導入是怎麼回事,如果我有這麼多的做花時間單獨的查詢。

+0

您可以刪除所有現有的行,然後根據CSV文件中的數據重新插入它們嗎? – 2010-08-15 19:50:01

+0

不幸的是,因爲用戶提交存儲在帳戶表中的額外信息。 – petesiss 2010-08-15 19:56:21

回答

1

將數據上傳到「登臺表」 - 然後在用戶表中首先執行兩個upserts,然後執行帳戶表 - 用於其中第二個的查詢將成爲連接到用戶表的登臺表例如用戶名或SSN(無論用戶的候選鍵是什麼)。

+0

嗯。有趣的想法。我可能會放棄這一點。乾杯。 – petesiss 2010-08-15 20:38:24

相關問題