0

我有一个表格,我从 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 文件将针对进行测试的每一天。如果学生至少通过一次,表格应该反映这一点。

我应该如何更改我的代码以实现这一点?

4

2 回答 2

0

加载脚本本身不能帮助您一起进行表插入和更新。您可以先将 CSV 文件加载到临时表中,然后使用脚本对最终表执行“Upsert”,然后截断临时表,或者每次创建和删除临时表。添加链接供您参考

于 2013-04-03T17:47:43.287 回答
0

我会先将每个新文件加载到一个临时表中。这在插入真实表时提供了更多选项。类似于以下内容:

  1. 加载数据文件 ... INTO TABLEtemporary_test_table
  2. INSERT INTO test_table SELECT * FROM temporary_test_table ON DUPLICATE KEY ...
  3. 截断临时测试表
于 2013-04-03T17:51:11.757 回答