我试图在我的opencart数据库中上传文件,我想批量上传产品UPC号码,我正在使用此查询:
e.preventDefault
首先,我使用以下查询导出了包含产品ID,产品名称和产品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`;
但不幸的是,这一行
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`
在表中插入NULL。
我首先尝试创建一个普通表(不是临时表)所以我看到UPC列中的所有内容都插入为NULL。
我正在为Microsoft Excel导出为CSV,并且我使用相同的扩展名保存文件。问题出在哪里?
这是csv文件中的一些示例和更新后的my_temp_table结果:
答案 0 :(得分:1)
哇,我似乎从未尝试过将CSV直接导入数据库,然后使用JOIN运行更新,也许你的背景是DBA而不是PHP开发人员?
无论如何,我建议您将CSV导入PHP中的数组:
$csv = array_map('str_getcsv', file('/home/mupckuco/dev/oc_product.csv'));
然后循环它以生成UPDATE语句。