我有一个表单,用户使用序列号更新数据库中的表,问题是在我的.csv文件中序列号的值为0,插入后它有000000,相同的1,插入后是000001.我需要它的确切方式,就像在.csv文件中一样。我的LOAD代码是:
LOAD DATA LOCAL INFILE path_to_file.csv
INTO TABLE im_seriennummer CHARACTER SET latin1
FIELDS TERMINATED BY ";"
IGNORE 1 LINES
(sn,description_sn)
在.csv文件中,它是这样的:
0
1
在数据库中
000000
000001
在数据库中,sn是varchar(16)。 这个问题对任何人都很熟悉吗?请不要告诉我改变字段的类型,我需要在varchar中使用它,因为一些序列号就像这个MT 002
答案 0 :(得分:0)
我认为解决方案是使用导入csv的临时表。
CREATE TEMPORARY TABLE tmptab LIKE im_seriennummer;
LOAD DATA LOCAL INFILE path_to_file.csv
INTO TABLE tmptab CHARACTER SET latin1
FIELDS TERMINATED BY ";"
IGNORE 1 LINES
(sn,description_sn)
UPDATE tmptab SET SERIAL = RIGHT(CONCAT('000000', SERIAL), 6)
INSERT INTO im_seriennummer
SELECT * FROM tmptab
DROP TEMPORARY TABLE tmptab;