0

这是我使用 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 

SET date_modified = CURRENT_TIMESTAMP;

假设我的 CSV 包含 15 列的 500 条记录。我更改了三行并以“XXX”终止它们。我现在想用这个文件更新 mysql 表。我的主键是自动递增的值。当我运行此查询时,所有 500 行都将使用旧数据进行更新,而我更改的行将被添加为新数据。我不想要新的。我希望我的表按原样替换为 csv。我尝试将我的主键更改为非 AI,它仍然不起作用。请问有什么指点吗??谢谢。

4

1 回答 1

0

我在这里做一些假设。

1)您的文件中没有自动编号值。

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

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

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

希望我没有弄错您的问题,但我怀疑可能是这种情况。

于 2012-06-02T06:07:33.250 回答