我有一个包含很多列的excel文件。我有两个数据库表 - job_new
和job_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_new
从CustManRef
docketno
等于job_dockets
excel文件中的JobNo
列
job_docket
的示例:
job_new
的示例:
Excel文件:
好的,我希望这些例子能让它更清晰。
因此,excel文件中的JobNo
等于DocketNo
中的job_dockets
。因此,当JobNo
等于DocketNo
时,我需要将3rdPartyRef
从job_new
更新为excel中的CustManRef
。
答案 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将能够在正确的字段中导入数据。