mysql - 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”
解决方案
如果 col4 是数字(例如INT
),那么问题如下:
- 解析该行以获取字符串
"7,344"
- 剥离封闭
"
:7,344
- 将字符串存储到
INT
列中。这需要将该字符串转换为数字。 - 转换在第一个非数字字符处停止,即逗号。
- 结果:
col4
设置为 7,并被,344
抛出。
MySQL 无法处理数字上的“数千个分隔符”。但你可以剥离它们:
LOAD ...
(col1, col2, col3, @num)
SET col4 = REPLACE(@num, ',', '')
推荐阅读
- reactjs - 没有使用渲染道具定义道具
- python - 如何使用python从.txt文件中提取随机单词?
- python - 如何使用python从字符串中删除引用的单词/短语?
- javascript - OrientDB:如何检查服务器端函数中的查询结果是否为空?
- c# - 在现有 .NET Core MVC 项目中基于 URL 有条件地渲染 React 组件
- javascript - 使用变换缩放:矩阵():如何坚持左边缘(改变缩放中心)?
- java - Java TCP Ping IP 地址
- php - 如何将主键的值插入到插入查询中
- nativescript - 为什么模拟器和物理设备之间的 scollview 行为不同?
- .net - 403 禁止:您无权访问此资源。Apache/2.4.18 (Ubuntu) 服务器端口 443