从Excel文件更新数据库表

我有一个包含许多列的Excel文件。 我有两个数据库表 – job_newjob_dockets 。 我试图创build一个从Excel文件(JobNo和CustManRef)拉两列的SQL查询,并从job_new表中更新字段3rdPartyRef ,但只有从job_dockets的字段DocketNo等于从Excel的job_dockets列文件。

 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; 

查询只是说0行受到影响,所以它不更新job_new表。

所以我想要做的是将3rdPartyRefjob_new设置到excel中的docketno ,其中来自job_dockets等于Excel文件中的job_dockets

job_docket示例:

在这里输入图像说明

job_new

在这里输入图像说明

Excel文件:

在这里输入图像说明

好吧,我希望这些例子更清楚。 所以Excel文件中的DocketNo等于DocketNojob_dockets 。 所以当DocketNo等于DocketNo我需要从excel中将CustManRef3rdPartyRef更新到CustManRef

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

@阴影是的,你是对的。 数据不是从Excel导入到临时表中的正确字段。 但是,excel列与job_new表中的列完全匹配。 – user123456789

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

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

JobNo,CustManRef指示MySQL将文本文件中的第一列和第二列导入到目标表的JobNo,CustManRef列中。 基于excel文件的截图,第一列和第二列是id和jobno列。

你应该从加载数据语句中删除这个线索,MySQL将能够在正确的字段中导入数据。