我有一个CSV文件,正在将其加载到数据库中。我希望每次加载CSV文件时都覆盖表中的先前数据,而不要附加这些数据。是否可以在单个查询中执行此操作?
是TRUNCATE
表然后利用LOAD DATA INFILE
查询的唯一解决方案吗?
答案 0 :(得分:2)
假设您有主键,则可以使用REPLACE
。正如documentation所述:
REPLACE和IGNORE修饰符控制对输入行的处理,这些输入行 在唯一键值上复制现有行:
- 如果指定REPLACE,则输入行将替换现有行。换句话说,对于主键或唯一索引具有相同值的行 作为现有行。请参见第13.2.9节“ REPLACE语句”。
但是,如果要替换现有表,请先截断该表,然后再加载。