【问题标题】:Mysql load data infile leaving unchanged fieldsMysql加载数据infile保持不变的字段
【发布时间】:2018-09-01 05:38:06
【问题描述】:

假设我有一个包含三个字段的 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 ';'

但在 REPLACE 的情况下,我想保持 value2 不变。

我怎样才能做到这一点?

【问题讨论】:

    标签: mysql file-upload mariadb


    【解决方案1】:

    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 with ON DUPLICATE KEY UPDATE

    【讨论】:

      猜你喜欢
      • 2012-05-26
      • 1970-01-01
      • 2011-01-28
      • 2010-10-22
      • 2011-05-25
      • 1970-01-01
      • 1970-01-01
      • 2020-04-18
      相关资源
      最近更新 更多