【发布时间】:2018-09-02 01:27:41
【问题描述】:
我尝试将(大)csv 加载到表格中。我用:
LOAD DATA LOCAL INFILE
'C:\\ProgramData\\MySQL\\MySQL Server 5.7\\Uploads\\xxxx.csv'
INTO TABLE xxx
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES
(@datetimeStr,...
csv 中的第一个值是“20000101130”。 MySQL 将 @datetimeStr 读取为 2.00001E+11(即数字?!)
我需要把这个数字分成: 年日小时(每个 4 个字符):即 2000 0101 1130
我试过了:
SELECT @datetimeStr; -> 给我 '2.00001E+11'(即一个数字)
SELECT convert(@datetimeStr , CHAR); -> 给我'2.00001E+11'(即也是一个数字)???
SELECT cast(@datetimeStr AS CHAR); > 给我 '2.00001E+11'(即也是一个数字)???
这些结果都不能让我做我想做的事,即
SELECT LEFT(CONVERT(@datetimeStr, CHAR), 4) 期待 '2000',但它总是给我 2.00
我错过了什么?
【问题讨论】:
-
您的属性显然在您的架构中定义为浮点数。您正在尝试像整数或 varchar 一样处理它。你能改变你的架构吗?
-
仅供参考,代码缩进四个空格。
-
我认为“csv 中的第一个值”必须是
200001011130,而不是20000101130,这样您的问题的其余部分才有意义。对吗? -
@O.琼斯,是的,我的错,200001011130 是 csv 中的第一个值
-
哦,旧的 Excel 错误。我已经记不清我被它烧了多少次了。叹息。
标签: mysql types casting floating-point precision