加载数据文本字段与数字逗号交互
LOAD Data text fields vs numeric comma interactions
我正在使用以下方法将 csv 文件加载到 mysql 数据库:
LOAD DATA LOCAL INFILE 'file_location.csv'
INTO TABLE social_spend
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 1 ROWS
我有一个文本字段,写为:'D,i,Y'
,上传后在我的数据库中显示为:'D,i,Y'
我有一个数字字段,写为:'1,234'
,在上传到:'1'
时自动截断
为什么文本字段保留逗号,但数字字段不保留?
当 MySQL 在数字上下文中遇到文本字符串时,它会将其强制转换为数字。草草了事。
因此,如果您在数字上下文中使用字符串 00134abc
,则会得到数字 134
。而且,在您的情况下,它看到 1,234
并将其强制为 1
.
是的,我们都知道这是 xxx 颈部疼痛。
您可以使用类似这样的东西来完成您的负载(未调试!)
LOAD DATA LOCAL INFILE 'file_location.csv'
INTO TABLE social_spend
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 1 ROWS
(col1, col2, @yourNumber, col4)
SET numberColumn = CAST(REPLACE(@yourNumber, ',', '') AS SIGNED INTEGER);
在括号之间,您可以列出 table 的列以对应于 CSV 中的列。如果您输入 @something
,您可以在 SET 子句的表达式中使用它。我显示的表达式从您的数字中删除了逗号。
我正在使用以下方法将 csv 文件加载到 mysql 数据库:
LOAD DATA LOCAL INFILE 'file_location.csv'
INTO TABLE social_spend
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 1 ROWS
我有一个文本字段,写为:'D,i,Y'
,上传后在我的数据库中显示为:'D,i,Y'
我有一个数字字段,写为:'1,234'
,在上传到:'1'
为什么文本字段保留逗号,但数字字段不保留?
当 MySQL 在数字上下文中遇到文本字符串时,它会将其强制转换为数字。草草了事。
因此,如果您在数字上下文中使用字符串 00134abc
,则会得到数字 134
。而且,在您的情况下,它看到 1,234
并将其强制为 1
.
是的,我们都知道这是 xxx 颈部疼痛。
您可以使用类似这样的东西来完成您的负载(未调试!)
LOAD DATA LOCAL INFILE 'file_location.csv'
INTO TABLE social_spend
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 1 ROWS
(col1, col2, @yourNumber, col4)
SET numberColumn = CAST(REPLACE(@yourNumber, ',', '') AS SIGNED INTEGER);
在括号之间,您可以列出 table 的列以对应于 CSV 中的列。如果您输入 @something
,您可以在 SET 子句的表达式中使用它。我显示的表达式从您的数字中删除了逗号。