gpt4 book ai didi

mysql - LOAD DATA LOCAL INFILE 在内部连接更新的情况下生成 null

转载 作者:行者123 更新时间:2023-11-29 10:31:06 26 4
gpt4 key购买 nike

我正在尝试在 opencart 数据库中上传文件,我想批量上传产品 UPC 编号,并且我正在使用以下查询:

CREATE TEMPORARY TABLE  `my_temp_table`
(
product_id INT(11),
name VARCHAR(255),
upc VARCHAR(12)
);

LOAD DATA LOCAL INFILE '/home/mupckuco/dev/oc_product.csv'
INTO TABLE `my_temp_table`
FIELDS TERMINATED BY ','
(`product_id`, `name`, `upc`);

UPDATE `oc_product`
INNER JOIN `my_temp_table` on `my_temp_table`.`product_id` = `oc_product`.`product_id`
SET `oc_product`.`upc` = `my_temp_table`.`upc`;

DROP TEMPORARY TABLE `my_temp_table`;

首先,我使用以下查询导出了包含产品 ID、产品名称的表以及包含产品 UPC 的列:

SELECT  `oc_product`.`product_id` ,  `oc_product_description`.`name` ,  `oc_product`.`upc` 
FROM `oc_product`
INNER JOIN `oc_product_description` ON `oc_product`.`product_id` = `oc_product_description`.`product_id`

但不幸的是,这一行

UPDATE `oc_product` INNER JOIN `my_temp_table` on `my_temp_table`.`product_id` = `oc_product`.`product_id` SET `oc_product`.`upc` = `my_temp_table`.`upc`

正在表中插入NULL。

我首先尝试创建一个普通表(不是临时表),因此我看到 UPC 列中的所有内容都插入为 NULL。

我正在导出为 Microsoft Excel 的 CSV,并使用相同的扩展名保存文件。问题可能出在哪里?

这是 csv 文件和更新后 my_temp_table 结果的一些示例:

excel csv

my_temp_table

最佳答案

哇,我从来没有见过有人尝试将 CSV 直接导入数据库,然后使用 JOIN 运行更新,也许您的背景是 DBA 而不是 PHP 开发人员?

无论如何,我建议您将 CSV 导入到 PHP 中的数组中:

$csv = array_map('str_getcsv', file('/home/mupckuco/dev/oc_product.csv'));

然后循环它以生成 UPDATE 语句。

关于mysql - LOAD DATA LOCAL INFILE 在内部连接更新的情况下生成 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47394000/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com