首页 > 解决方案 > Mysql Load File Error 加载不准确的数据

问题描述

嗨,我有一个 csv 数据集,例如

ukwn,34,2018-10-01,"757,271"

ukwn,3,2018-10-01,"7,342"

"嗨",23,2018-10-01,"3,483,887"

我想将它插入数据库中,所以我编写了代码:

将 DATA LOCAL INFILE 'data.csv' 加载到表 app_spend_metric 字段中,由 ',' 终止,可选地由 '"' 封闭,由 '\n' 终止,忽略 1 行 (col1,col2,col3,col4)

但是我无法插入 col4(第 4 行),因为在“7,345”之类的“”中有“,”

我当时试过,

将 DATA LOCAL INFILE 'data.csv' 加载到表 app_spend_metric 字段中以 ',' 终止的行 '\n' IGNORE 1 行 (col1,col2,col3,col4)

但这一次它在 col4 中输入部分数据,就像在“7,344”中一样,它只输入“7”

标签: mysqlmariadb

解决方案


如果 col4 是数字(例如INT),那么问题如下:

  1. 解析该行以获取字符串"7,344"
  2. 剥离封闭"7,344
  3. 将字符串存储到INT列中。这需要将该字符串转换为数字。
  4. 转换在第一个非数字字符处停止,即逗号。
  5. 结果:col4设置为 7,并被,344抛出。

MySQL 无法处理数字上的“数千个分隔符”。但你可以剥离它们:

LOAD ...
    (col1, col2, col3, @num)
    SET col4 = REPLACE(@num, ',', '')

推荐阅读