在mysql中前导零

时间:2014-02-18 13:07:15

标签: mysql csv

我有一个表单,用户使用序列号更新数据库中的表,问题是在我的.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

1 个答案:

答案 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;