Master-X
Форум | Новости | Статьи
Главная » Форум » Программинг, Скрипты, Софт, Сервисы » 
Тема: Как или чем затащить 100 меговый тхт в mysql?
цитата
12/11/10 в 12:13
 Axel-B
САБЖ, данные в формате:
Код:
01aaaaaa     eeeeeee   ttttttt
01aaaaaa     eeeeeee   ttttttt
01aaaaaa     eeeeeee   ttttttt
......
01aaaaaa     eeeeeee   ttttttt
02dddddd     wwwwwww   ttttttt
02dddddd     wwwwwww   ttttttt
02dddddd     wwwwwww   ttttttt
......
02dddddd     wwwwwww   ttttttt
03kkjjutr    eeddddd
03kkjjutr    eeddddd
.....

и так далее, первые два символа номер таблицы(всего четыре), далее данные. Пробовал на php написать скрипт, что-то виснет все при обработке(размер файла по видимо слишком большой).
цитата
12/11/10 в 12:51
 doommy
Размер файла не причем, это забавный формат данных.

Разнеси данные по 4-м файлам, убрав при этом 01,02,03,04 из первой колонки.

Тогда 4 команды из командной строки mysql:
LOAD DATA LOCAL INFILE "01.txt" INTO TABLE 01;
LOAD DATA LOCAL INFILE "02.txt" INTO TABLE 02;
LOAD DATA LOCAL INFILE "03.txt" INTO TABLE 03;
LOAD DATA LOCAL INFILE "04.txt" INTO TABLE 04;

база с таблицами должна быть перед этим создана.
цитата
12/11/10 в 12:59
 wMaster
Axel-B писал:
Пробовал на php написать скрипт, что-то виснет все при обработке(размер файла по видимо слишком большой).

Мне кажется лучше будет через командную строку.
цитата
12/11/10 в 13:12
 Axel-B
Цитата:
Разнеси данные по 4-м файлам, убрав при этом 01,02,03,04 из первой колонки.
А чем его лучше "разнести", ручками долго и нудно, на php не получается (размер 100 мегов)?
цитата
12/11/10 в 13:26
 Jacob
Код:
grep '^01' data.txt | sed 's/..\(.*\)/\1/' > 01.txt
grep '^02' data.txt | sed 's/..\(.*\)/\1/' > 02.txt
grep '^03' data.txt | sed 's/..\(.*\)/\1/' > 03.txt
grep '^04' data.txt | sed 's/..\(.*\)/\1/' > 04.txt

Как-то так icon_cool.gif
цитата
12/11/10 в 13:40
 doommy
Разнесение с убиранием 01,...04 в nix'e:

grep ^01 -G 100mega.txt |sed 's/^01//g' >01.txt
grep ^02 -G 100mega.txt |sed 's/^02//g' >02.txt
grep ^03 -G 100mega.txt |sed 's/^03//g' >03.txt
grep ^04 -G 100mega.txt |sed 's/^04//g' >04.txt


Эта страница в полной версии