繁体   English   中英

MySQL加载数据infile保留不变的字段

[英]Mysql load data infile leaving unchanged fields

假设我有一个包含三个字段的MySQL表:key,value1,value2

我想从文件inserts.txt加载两个字段(键,值1)的数据。 inserts.txt的内容:

1;2
3;4

有:

LOAD DATA LOCAL INFILE 
   "inserts.txt"
REPLACE
INTO TABLE 
    `test_insert_timestamp`
FIELDS TERMINATED BY ';'

但是在替换的情况下,我想保持value2不变。

我怎样才能做到这一点?

REPLACE语句包含以下算法:

MySQL对REPLACE(和LOAD DATA ... REPLACE)使用以下算法:

尝试将新行插入表中

虽然插入失败是因为主键或唯一索引发生重复键错误:

  • 从表中删除具有重复键值的冲突行

  • 再试一次将新行插入表中

https://dev.mysql.com/doc/refman/5.7/en/replace.html

因此,您无法保留将要删除的行中的值。

您想要做的是模拟“ ON DUPLICATE KEY UPDATE”逻辑。

您不能在单个LOAD DATA查询中执行此操作。 您要做的是先将数据加载到临时表中,然后将INSERT从临时表插入到目标表中,在此表中将可以使用“ ON DUPLICATE KEY UPDATE”功能。

整个过程在此问题的最高支持答案中有详细介绍: MySQL LOAD DATA INFILE ON ON DUPLICATE KEY UPDATE

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM