【问题标题】:load data local infile with decimal values使用十进制值加载数据本地 infile
【发布时间】:2014-02-11 08:57:34
【问题描述】:

我为客户创建了一个 csv 文件的导入器,我遇到的问题是文件中的十进制值被截断,例如:

in .csv file price is 12,23
and in database it is saved as 12.

我检查了这些字段,它们被设置为十进制(10,2),所以这不应该是常见的。我的加载文件代码是:

LOAD DATA LOCAL INFILE "U:/v7/root/file/docimport/3/87/article.csv" 
INTO TABLE im_artikel 
CHARACTER SET latin1 FIELDS TERMINATED BY ";" IGNORE 1 LINES 
(article,price,grossprice);
show WARNINGS;

我得到一个错误:

1265 Data truncated for column 'price' at row 1
1265 Data truncated for column 'grossprice' at row 1

.csv 文件如下所示:

Shoes;40,00;21,46

我可以将所有字段更改为 varchar 而不是我没有问题,但我认为这不是解决方案。

【问题讨论】:

  • MySQL 使用. 作为小数分隔符,而不是,
  • 我对更改 60k 记录的数据感觉不太好:/
  • 好吧,那太糟糕了。
  • 只需在文本编辑器中打开它并运行全部替换? :)

标签: mysql csv


【解决方案1】:

请尝试一下:

LOAD DATA LOCAL INFILE "U:/v7/root/file/docimport/3/87/article.csv" 
INTO TABLE im_artikel 
CHARACTER SET latin1 FIELDS TERMINATED BY ";" IGNORE 1 LINES 
(article,@p,@gp)
SET price = REPLACE(@p, ',', '.'), grossprice = REPLACE(@gp, ',', '.');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-25
    • 1970-01-01
    • 2023-03-09
    • 2016-07-29
    • 2012-10-26
    • 2015-12-20
    • 1970-01-01
    相关资源
    最近更新 更多