【发布时间】:2026-01-29 06:50:01
【问题描述】:
我有一些必须导入数据库的大文件。它们没有分隔符,因此宽度固定。问题是我希望将某些字段的平均值作为一列,并且仅来自不为 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 代替?
PHP 的问题是实际文件有 9M 行、900 列和每行 10k 字符,我认为导入会很慢。
【问题讨论】:
-
我喜欢人们尝试在 mysql 端编写代码... :-)
标签: mysql import fixed-width