从Excel文件更新数据库表

时间:2016-06-02 10:10:14

标签: mysql excel

我有一个包含很多列的excel文件。我有两个数据库表 - job_newjob_dockets。 我试图创建一个从excel文件(JobNo和CustManRef)中提取两列的SQL查询,并从3rdPartyRef表中更新字段job_new,但仅限于字段{{1 } DocketNo等于excel文件中的job_dockets列。

JobNo

查询只是说影响了0行,所以它没有更新job_new表。

所以我要做的是将CREATE TEMPORARY TABLE your_temp_table LIKE job_new; LOAD DATA INFILE 'C:/Users/cdaly/Desktop/test.csv' INTO TABLE your_temp_table FIELDS TERMINATED BY ',' (JobNo,CustManRef); UPDATE job_new j LEFT JOIN job_dockets d on d.JobID = j.ID AND j.CompanyID = 195 INNER JOIN your_temp_table on your_temp_table.JobNo = d.DocketNo SET j.3rdPartRef = your_temp_table.CustManRef; DROP TEMPORARY TABLE your_temp_table; 3rdPartyRef设置为job_newCustManRef docketno等于job_dockets excel文件中的JobNo

job_docket的示例:

enter image description here

job_new的示例:

enter image description here

Excel文件:

enter image description here

好的,我希望这些例子能让它更清晰。 因此,excel文件中的JobNo等于DocketNo中的job_dockets。因此,当JobNo等于DocketNo时,我需要将3rdPartyRefjob_new更新为excel中的CustManRef

1 个答案:

答案 0 :(得分:1)

根据评论中的讨论,问题的根本原因是:

  

@Shadow是的,你是对的。数据不会从excel导入临时表中的正确字段。但是excel列与job_new表中的列完全匹配。 - user123456789

未正确导入列的原因在于load data命令,特别是在命令末尾提供的列列表中:

...
FIELDS TERMINATED BY ','
(JobNo,CustManRef); 

JobNo,CustManRef指示MySQL将文本文件中的第1列和第2列导入目标表的JobNo,CustManRef列。根据excel文件的屏幕截图,第1列和第2列是id和jobno列。

您应该从加载数据语句中删除此cluse,MySQL将能够在正确的字段中导入数据。