我得到了一个非常大的.txt(csv)(100k+个条目),它每晚通过ftp发送到我的服务器,然后我使用这个查询:

LOAD DATA LOCAL INFILE '/x/x/public_html/2013/fluid1/x3export/x3export.txt' REPLACE INTO TABLE x3export FIELDS TERMINATED BY '|'

我想用replace更新“x3export”中的数据。但是,数据中没有唯一的字段,您必须组合两个字段才能创建唯一的id。(catalogeref+HierarchyCode)但是,我不知道如何做到这一点,因为从我所读的加载数据只使用预定义的唯一键或索引列,而您不能(?)提供它应该替换的内容。
再进一步解释一下:
例如,catalogeref可能是:001ABC。
例如,HierarchyCode可能是:AAA
(不要问我这些是什么意思,我不知道它们来自需要它们的另一个系统。)可能有多个行具有相同的目录,但是将它们加在一起,使001ABCAAA根据我所知创建一个唯一的id。希望能帮上忙?
谢谢

最佳答案

请参阅此处的MySQL文档:http://dev.mysql.com/doc/refman/5.5/en/load-data.html
在文本的末尾,SET关键字将被解释为允许您对要插入的值进行一些操作,您可以将其转换为有用的内容,例如,

LOAD DATA LOCAL INFILE 'x3export.txt'
REPLACE INTO TABLE x3export
FIELDS TERMINATED BY '|'
    (Column1, Column2, Column3, @CatalogueRef, @HierarchyCode)
SET ID = concat(@CatalogueRef, @HierarchyCode);

08-06 14:45