问题描述
CREATE TABLE food(
Id_food INT NOT NULL AUTO_INCREMENT,`Name` VARCHAR(255) NOT NULL,brand VARCHAR(255) NOT NULL,producer VARCHAR(255),amount INT,total_amount INT,PRIMARY KEY (Id_food)
);
LOAD DATA LOCAL INFILE 'file.csv'
INTO TABLE food
FIELDS TERMINATED BY ';'
ENCLOSED BY '"'
LInes TERMINATED BY '%'
IGnorE 1 ROWS
(
Name,amount,brand
);
csv 文件包含食物列表。
我想导入特定的列:
csv中的列顺序是:
如果 amount(ml) 列中有一个数字,则另一个 amount(g) 列中有一个减号(“-”)。
导入时如何在金额列中合并这两列?
还有一个问题,如何在填充完金额后填充total_amount列?
解决方法
将多余/不明确的列检索到用户定义的变量中:
LOAD DATA LOCAL INFILE 'file.csv'
INTO TABLE food
FIELDS TERMINATED BY ';'
ENCLOSED BY '"'
LINES TERMINATED BY '%'
IGNORE 1 ROWS
(
Name,@amount_ml,@amount_mg,brand,@dummy1,@dummy2,... -- necessary amount of dummy variables according to CSV structure
)
SET amount = CASE WHEN @amount_ml > 0 -- adjust the condition due to CSV structure
THEN @amount_ml
ELSE @amount_mg
END
;
不要加载到同一列或变量中 - 结果将是不可预测的(甚至可能查询失败)。