如果满足某个条件,则更新密钥副本上的特定字段

时间:2013-04-03 17:42:48

标签: mysql sql sql-update import-from-csv on-duplicate-key

我有一张表格,我从CSV文件上传数据。

字段如下所示:

StudentName | SubjectName| Result
---------------------------------
Adam        | Math       | Fail
Bob         | History    | Pass
Catherine   | Math       | Pass
Dave        | Science    | Fail
Evan        | History    | Pass
  

这里的主键是(StudentName,SubjectName)

我使用以下代码将数据输入表中:

Load data local infile 'C:\\Test.csv' INTO TABLE test_table
Fields terminated by ','
OPTIONALLY ENCLOSED BY '"'
ESCAPED BY '"'
Lines terminated by '\n'
ignore 1 lines;

我需要导入多个csv文件。可能存在关键重复。我正在尝试在遇到重复时更新某个字段。

即:如果有重复,UPDATE field RESULT if : value for result in the duplicate entry is "Pass". 每个csv文件将用于进行测试的每一天。 如果学生至少获得一次通过,表格应反映出来。

我应该如何更改代码才能实现这一目标?

2 个答案:

答案 0 :(得分:0)

加载脚本本身无法帮助您一起执行表插入和更新。您可以先将CSV文件加载到临时表中,然后使用脚本对最终表进行“Upsert”,然后截断临时表,或者每次创建和删除临时表。 Add a link for your reference

答案 1 :(得分:0)

我会先将每个新文件加载到临时表中。这在插入真实表时提供了更多选项。有点像:

  1. LOAD DATA FILE ... INTO TABLE temporary_test_table
  2. INSERT INTO test_table SELECT * FROM temporary_test_table ON DUPLICATE KEY ...
  3. TRUNCATE temporary_test_table