有没有一种方法可以用LOAD DATA LOCAL INFILE覆盖表?

时间:2020-02-29 23:23:39

标签: mysql sql load-data-infile

我有一个CSV文件,正在将其加载到数据库中。我希望每次加载CSV文件时都覆盖表中的先前数据,而不要附加这些数据。是否可以在单个查询中执行此操作?

TRUNCATE表然后利用LOAD DATA INFILE查询的唯一解决方案吗?

1 个答案:

答案 0 :(得分:2)

假设您有主键,则可以使用REPLACE。正如documentation所述:

REPLACE和IGNORE修饰符控制对输入行的处理,这些输入行 在唯一键值上复制现有行:

  • 如果指定REPLACE,则输入行将替换现有行。换句话说,对于主键或唯一索引具有相同值的行 作为现有行。请参见第13.2.9节“ REPLACE语句”。

但是,如果要替换现有表,请先截断该表,然后再加载。