Mysql 加载数据需要本地填充帮助

Mysql 加载数据需要本地填充帮助,mysql,sql,import,Mysql,Sql,Import,下面是我使用csv文件加载mysql表的查询 LOAD DATA LOCAL INFILE table.csv REPLACE INTO TABLE table1 FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\'' LINES TERMINATED BY 'XXX' IGNORE 1 LINES 设置修改日期=当前时间戳 假设我的CSV包含500条15列的记录。我换了三行,以“XXX”结尾。现在我想用这个文件更新mysql表。我的主键是自

下面是我使用csv文件加载mysql表的查询

LOAD DATA LOCAL INFILE table.csv REPLACE INTO TABLE table1 FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\'' LINES TERMINATED BY 'XXX' IGNORE 1 LINES 
设置修改日期=当前时间戳

假设我的CSV包含500条15列的记录。我换了三行,以“XXX”结尾。现在我想用这个文件更新mysql表。我的主键是自动递增的值。当我运行此查询时,所有500行都将使用旧数据更新,而我更改的行将作为新数据添加。我不想要新的。我希望我的表按原样替换为csv。我试着把主键改成非人工智能,但还是不起作用。有什么指示吗??谢谢。

我在这里做一些假设

1) 文件中没有“自动编号”值

由于主键不在文件中,MySQL将无法匹配行。自动编号主键是一个人工键,因此它不是数据的一部分。MySQL在插入行时添加这个人工主键

假设您的文件包含一些唯一标识符,我们称之为标识号。这个数字在文件中,并且您的表使用它作为主键。在这种情况下,MySQL将能够识别文件中的行,并将它们与表中的行相匹配

虽然很多人只会在数据库中使用自动编号,但我总是检查数据中是否没有自然键。如果我确定了一个,我会使用表中的这个自然键进行一些性能测试。然后根据两者的性能指标,我再决定一个密钥


希望我没有弄错你的问题,但我怀疑可能是这样

为什么不截断表,然后导入数据文件?是的,这是一个选项,但用户希望这样。标记行更改比删除未更改的行容易。你的意思是这样的,对吗?我认为@Ander2的意思是清除现有表中的所有内容,然后导入更改的文件。请发布
SHOW CREATE table table 1
@sqlkiller的输出。我清空了表并尝试了。但只有更改的记录(由XXX终止的记录)被添加到表中,因为我提到了LINES terminated子句。如果我删除这个子句,我就不能将“date_modified”更新为仅更改的记录,对吗?我的文件和表都有自动递增的值。文件和数据库中的值匹配吗?是的,主键值在文件和数据库中都匹配。这是一个该死的理论。回到绘图板上,我让它工作起来了。但没有用于此的加载数据选项。我根据“XXX”对文件进行了筛选,并基于此更新了表。