我使用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的类似问题和许多响应(现在无法找到链接)建议以文本形式加载,然后转移到新的数字字段并删除旧字段,这是一个最佳解决方案吗?这个问题通常如何处理?因为我确信这种情况必须发生很多(加载所有这些文本数据并对它们执行操作)
答案 0 :(得分:0)
将数据加载到临时表中。根据需要操作。从您的临时表中写入您的真实表格。