【发布时间】:2019-06-23 04:37:40
【问题描述】:
我正在使用这个 LOAD DATA LOCAL INFILE 语句来快速上传文件。
LOAD DATA LOCAL INFILE 'file_location/file.txt'
INTO TABLE mytable
FIELDS TERMINATED by '\t'
LINES TERMINATED BY '\n'
IGNORE 18 LINES //ignore some header info
(sampleID, testID);
但是我过去已经加载了一些文件,我想避免重复。
数据库结构包括一个自动递增的 PK 作为附加列。
在上传之前不必打开每个文件并进行搜索以确定这些记录是否已经存在,有没有办法修改我正在使用的命令来忽略基于同时具有 sampleID 和 testID 行的重复行在与传入文件匹配的表中?
例如,假设当前表有以下行:
tablePKID sampleID testID
0 0001 A
1 0001 B
2 0003 A
3 0003 B
我希望导入一个包含以下记录的文件
0001 A
0001 B
0001 C
0005 A
0005 B
我怎样才能确保只有
0001 C
0005 A
0005 B
是进口的吗?
【问题讨论】:
-
桌子上有钥匙吗?
-
'如果指定 IGNORE,则丢弃与唯一键值上现有行重复的行'dev.mysql.com/doc/refman/8.0/en/load-data.html
-
column "tablePKID" 是一个自动增量 PK - 我想指定构成重复事件的内容,即在我的例子中,列 sampleID 和 testID 的行都与传入行匹配