从Excel文件更新数据库表
我有一个包含许多列的Excel文件。 我有两个数据库表 – job_new
和job_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表。
所以我想要做的是将3rdPartyRef
从job_new
设置到excel中的docketno
,其中来自job_dockets
等于Excel文件中的job_dockets
列
job_docket
示例:
job_new
:
Excel文件:
好吧,我希望这些例子更清楚。 所以Excel文件中的DocketNo
等于DocketNo
的job_dockets
。 所以当DocketNo
等于DocketNo
我需要从excel中将CustManRef
的3rdPartyRef
更新到CustManRef
。
根据评论的讨论,这个问题的根本原因是:
@阴影是的,你是对的。 数据不是从Excel导入到临时表中的正确字段。 但是,excel列与job_new表中的列完全匹配。 – user123456789
没有正确导入列的原因是在load data命令中,特别是在命令末尾提供的列列表中:
... FIELDS TERMINATED BY ',' (JobNo,CustManRef);
JobNo,CustManRef指示MySQL将文本文件中的第一列和第二列导入到目标表的JobNo,CustManRef列中。 基于excel文件的截图,第一列和第二列是id和jobno列。
你应该从加载数据语句中删除这个线索,MySQL将能够在正确的字段中导入数据。