我有一些巨大的文件,我必须导入到数据库。它们没有分隔符,所以固定宽度。问题是,我希望将某些字段的平均值作为一列,并且仅从非0的那些字段开始。
示例文本(实际文本中没有空格):
ASDD 000 000 003
BBBB 006 004 000
CCCC 001 002 000
我需要的结果插件是
ASDD | 3
BBBB | 5 [(6+4)/2]
CCCC | 1.5 [(1+2)/2]
现在我正在使用下一个代码,这显然是错误的。
LOAD DATA LOCAL
INFILE '{$file}'
INTO TABLE data
(@var1)
SET
name=SUBSTR(@var1,1,4)
avg=(SUBSTR(@var1,5,3)+SUBSTR(@var1,8,3)+SUBSTR(@var1,11,3))/3
生成下一个条目:
ASDD | 1
BBBB | 3.33
CCCC | 1
我的问题是,有没有办法正确使用LOAD DATA LOCAL(或任何其他SQL直接),或者我应该使用php istead?
PHP的问题是真实文件每行有9M行,900列和10k字符,我认为导入速度很慢。
答案 0 :(得分:0)
name=SUBSTR(@var1,1,4)
num = IF(SUBSTR(@var1,5,3)=0,0,1)+IF(SUBSTR(@var1,8,3)=0,0,1)+IF(SUBSTR(@var1,11,3)=0,0,1)
avg=(SUBSTR(@var1,5,3)+SUBSTR(@var1,8,3)+SUBSTR(@var1,11,3))/num