我使用以下命令从Python成功地将大型CSV文件(具有1个标题行)加载到MySQL表中:
LOAD DATA LOCAL INFILE 'file.csv'
INTO TABLE 'table"
FIELDS TERMINATED BY ';'
IGNORE 1 LINES
(@vone, @vtwo, @vthree)
SET DatumTijd = @vone,
Debiet = NULLIF(@vtwo,''),
Boven = NULLIF(@vthree,'')
这个文件包含了1970年以来的历史数据。每个月我都会得到一个更新,大约有4320行需要添加到现有的表中。
有时会与现有表重叠,所以我想使用REPLACE。但这似乎不适合与IGNORE 1 LINES组合使用。主键是DatumTijd,它遵循MySQL-datetime格式。
我以不同的顺序尝试了REPLACE和IGNORE的几种组合,在INTO TABLE“table”之前和FIELDS TERMINATED部分之后。
有什么建议可以解决这个问题吗?
1条答案
按热度按时间2izufjch1#
除了用单引号(而不是反引号)括起表名可能存在的拼写错误之外,load语句在我的windows设备上工作正常,给出了以下数据
注意我更喜欢合并而不是nullif,并包含了一个auto_increment id来演示replace实际上做了什么,即删除和插入。
replace实际上创建了一条新记录,但如果它确实创建了一条新记录,那么请考虑加载到staging表中,然后在重复键上插入..到target