我有一个CSV文件,我需要插入MySQL表。但是,CSV文件与表的列数不同,列的顺序不同。
该表包含以下列: ID,Product_ID,Order_ID,Shipping_Name,Shipping_Postcode,Tracking_Number
CSV包含: Tracking_Number,Order_ID,姓名,邮政编码 (产品ID是文件的名称,我可以在PHP中将其设置为变量,然后更新列,这样就可以了)
我知道您可以在查询中使用@创建假列以跳过表中的某些列,但我不确定如何链接不同顺序的列,或者甚至可能。
以下是我在列匹配时使用的查询:
LOAD DATA INFILE '/var/www/html/imports/tracking/$file'
IGNORE INTO TABLE tracking
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(@product_id, @order_id, @shipping_name, @shipping_postcode, @tracking_number)
SET Product_ID=@product_id, Order_ID=@order_id, Shipping_Name=@shipping_name, Shipping_Postcode=@shipping_postcode, Tracking_Number=@tracking_number";
我可以根据需要进行调整吗?
答案 0 :(得分:1)
你没有product_id所以
只需将csv用作位置,将列表用于缩进
LOAD DATA INFILE '/var/www/html/imports/tracking/$file'
IGNORE INTO TABLE tracking
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(@col1, @col2, @col3, @col4)
SET Order_ID=@col2, Shipping_Name=@col3, Shipping_Postcode=@col4, Tracking_Number=@col1";