2010-08-15 130 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

相关问题