【问题标题】:MYSQL Bulk "INSERT ... ON DUPLICATE KEY UPDATE ..." via "LOAD DATA INFILE"MYSQL Bulk “INSERT ... ON DUPLICATE KEY UPDATE ...”通过“LOAD DATA INFILE”
【发布时间】:2011-07-19 15:52:03
【问题描述】:

嘿嘿,

我需要批量更新一个表。我可以使用 mysql 的“LOAD DATA INFILE”语句和“INSERT ... ON DUPLICATE KEY UPDATE”语句来完成我的任务吗?

【问题讨论】:

  • 看看这个相关的线程:[mysql重复加载数据][1][1]:stackoverflow.com/questions/1965001/…
  • 这不是我想要的,我已经准备好声明,所以我只想查询它们。此外,当从临时表中“SELECT ...”-ing 时不会有太多时间吗?

标签: mysql load performance


【解决方案1】:

根据您的具体要求,您可以使用LOAD DATA INFILEREPLACE 选项来完成此操作。来自手册:

  • 如果指定 REPLACE,输入行将替换现有行。其他 主键或唯一值具有相同值的单词、行 索引作为现有行。请参阅第 12.2.7 节“替换语法”。

例子:

LOAD DATA INFILE '/tmp/data.txt'
REPLACE INTO TABLE your_table
(column1, column2, ...)

【讨论】:

  • 那么文件中的条目应该是什么样子?我想不应该是这样的:INSERT INTO myTable (coloumn1,...) (value1,...)
  • 默认文件格式是制表符分隔的,但您可以覆盖字段和行终止符以导入 CSV 或其他格式。查看 LOAD DATA INFILE 的文档页面:dev.mysql.com/doc/refman/5.1/en/load-data.html
  • 我发出了以下查询,但数据库不会被填充...LOAD DATA LOCAL INFILE "path/to/my/file/sqldump.txt" REPLACE INTO TABLE mytable FIELDS TERMINATED BY ',' LINES STARTING BY ';'
  • 您的文本文件是否包含表格中的每一列,它们在表格定义中出现的顺序是否完全相同?
  • 是的,第一行已正确插入,另一行奇怪的是没有...phpmyadmin 告诉我也只插入了一行
猜你喜欢
  • 2018-05-22
  • 2019-02-12
  • 2011-08-09
  • 1970-01-01
  • 2023-02-06
  • 2010-10-07
  • 1970-01-01
  • 2017-04-14
相关资源
最近更新 更多