加载重复数据

如果使用 LOAD DATA INFILE 命令使用现有数据填充表,则通常会发现由于重复导致导入失败。有几种可能的方法可以解决这个问题。

加载数据本地

如果在服务器中启用了此选项,则可以使用它来加载客户端计算机而不是服务器上存在的文件。副作用是忽略唯一值的重复行。

LOAD DATA LOCAL INFILE 'path of the file/file_name.txt' 
INTO TABLE employee

LOAD DATA INFILE’fname’替换

使用 replace 关键字时,重复的唯一键或主键将导致现有行被替换为新行

LOAD DATA INFILE 'path of the file/file_name.txt' 
REPLACE INTO TABLE employee

LOAD DATA INFILE’fname’IGNORE

REPLACE 相反,现有行将被保留,新的行将被忽略。这种行为类似于上面描述的 LOCAL。但是,客户端计算机上不需要存在该文件。

LOAD DATA INFILE 'path of the file/file_name.txt' 
IGNORE INTO TABLE employee

通过中间表加载

有时忽略或替换所有重复项可能不是理想的选择。你可能需要根据其他列的内容做出决策。在这种情况下,最好的选择是加载到中间表并从那里转移。

INSERT INTO employee SELECT * FROM intermediary WHERE ...