2

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

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

我希望使用替换来更新“x3export”中的数据。但是,数据中没有唯一的字段,您必须组合两个字段来创建唯一的 id。(CatalogueRef + HierarchyCode)但是我不知道该怎么做,因为我读过的 LOAD DATA 只使用预定义的唯一键或索引列,你不能(?)提供它应该替换的内容.

尝试进一步解释:

例如, CatalogueRef可能是:001ABC。例如,HierarchyCode可能是:AAA

(不要问我这些是什么意思,我真的不知道它们来自另一个需要它们的系统。)可能有多行具有相同的 CatalogueRef 但是将它们加在一起以使 001ABCAAA 从我创建一个唯一的 id'米告诉。希望这能有所帮助?

谢谢

4

1 回答 1

0

请参阅此处的 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);
于 2013-01-11T11:30:57.293 回答