我有一个包含逗号分隔字段的文本文件。文件中的记录可以重复。但是,当我将它们插入数据库时​​,我想插入记录的第一个匹配项,并忽略任何重复的记录(基于第一个字段值,该值应该是唯一的)。

这是我的声明,由于第一个文件的重复值(我将其标记为唯一)而导致错误。

LOAD DATA LOCAL INFILE '/var/lib/mysql-files/myfile.txt'
INTO TABLE `scheme`.`mytable` fields terminated BY ',';

最佳答案

您可以使用loaddata将行加载到“临时”表中,然后

INSERT INTO targetTable (firstField, ...set of columns...)
  SELECT DISTINCT firstField, ...set of columns...
    FROM temp
    WHERE firstField NOT IN (SELECT firstField FROM target);


它需要:firstField->列集(功能依赖)

或者,您可以将INSERT与IGNORE选项一起使用(重复时没有错误):

INSERT IGNORE INTO targetTable (firstField, ...set of columns...)
 SELECT DISTINCT firstField, ...set of columns...
    FROM temp;


或与表架构相同:

INSERT IGNORE INTO targetTable
   SELECT *
    FROM temp;

关于mysql - 如何从文件中加载数据而不重复记录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55481391/

10-10 01:03