У меня есть огромные файлы, которые мне нужно импортировать в БД. У них нет разделителей, поэтому фиксированная ширина. Дело в том, что я хотел бы иметь СРЕДНЕЕ некоторых полей в одном столбце, и только от тех, которые не являются 0.Импорт фиксированной ширины MYSQL
Пример текста (без пробелов в реальном):
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 символов в строке, и я думаю, что импорт будет довольно медленным.
Мне нравится, когда люди пытаются код на тузде стороны ... :-) – Alex