如何在MySQL中汇总varchar值

时间:2014-01-08 16:39:12

标签: mysql sql

我使用Load Data infile语句将多个文本文件加载到数据库中。尝试将数值加载到各自的数字字段时似乎存在问题。我做了一些研究,根据MySQL documentation,加载的所有数据都被视为文本,因此所有值都被输入为null。

  

LOAD DATA INFILE将所有输入视为字符串,因此您无法使用   ENERT或SET列的数值以INSERT的方式   声明。必须将所有ENUM和SET值指定为字符串。

我尝试将特定字段转换为数字或小数,但我仍然在表中获取空值。

LOAD DATA INFILE 'blabla.txt' INTO TABLE example  FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' ESCAPED BY '' LINES TERMINATED BY '\r\n' ignore 1 lines
(field1, field2, field3, @problemfield,)

set problemfield= cast((REPLACE(REPLACE(REPLACE(@problemfield,',',''),'(', '-'), ')','')) as DECIMAL(10,0));

我正在使用替换,因为有时负数位于数据的括号中。

在加载时有关于关于转换的stackoverflow的类似问题和许多响应(现在无法找到链接)建议以文本形式加载,然后转移到新的数字字段并删除旧字段,这是一个最佳解决方案吗?这个问题通常如何处理?因为我确信这种情况必须发生很多(加载所有这些文本数据并对它们执行操作)

1 个答案:

答案 0 :(得分:0)

将数据加载到临时表中。根据需要操作。从您的临时表中写入您的真实表格。