在mysql中插入批量而不重复两个行值

时间:2014-06-05 19:39:06

标签: mysql csv

我的用户将上传大型csv文件。我需要添加批量mysql值(比如insert into my_table (name, email) values ('john', 'abc@d.co'), ('foo','def@g.org') ...

如果数据库或查询本身存在重复的电子邮件,则不应插入(或者应使用新名称更新它们)。

我每个值运行一次查询,但性能很糟糕(2,000 csv文件需要一分钟或更长时间)。

如何优化此优化,最好是优质查询,或创建唯一的复合键(user_id和电子邮件组合是唯一的),并声明insert ignore into my_table ...忽略重复项。但是如何?

谢谢!

1 个答案:

答案 0 :(得分:1)

我直接从这里解除了这个:On Duplicate Key Update - Multiple Columns

如果它有效,你应该给他/她一个碰撞。

INSERT INTO my_table
  (name, email)
VALUES
  ('john', 'abc@d.co'), 
  ('foo','def@g.org')
ON DUPLICATE KEY UPDATE
  name=VALUES(name)
  email=VALUES(email)