Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как закачать данные через веб? / 11 сообщений из 11, страница 1 из 1
05.04.2004, 16:33
    #32469416
AlexPretov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как закачать данные через веб?
Привет всем.

На Веб сервер помещается текстовый файл с данными с определенно периодичностью:

Код: plaintext
http:// 192 . 10 . 0 . 34 /cli.txt


Его нужно закачать в таблицу. Файл большой, на несколько десятков тысяч записей.

В настоящее время задачу решаем через промежуточный файл, т.е. сначала скачиваем файл на локальный винт (утилитой wget), а дальше обычным импортом закачиваем в таблицу.

Пробовали perl-им скриптом напрямую -- генерацией на лету INSERT ... VALUES ..., но это вариант очень долго работает, раза в четыре медленнее чем через промежуточный файл.

Может кто подскажет способ быстрой закачки данных без создания промежуточного файла?

________________
С уважением, Alex Pretov
...
Рейтинг: 0 / 0
05.04.2004, 16:49
    #32469446
fedd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как закачать данные через веб?
LWP::Simple не поможет?
...
Рейтинг: 0 / 0
05.04.2004, 17:19
    #32469513
AlexPretov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как закачать данные через веб?
fedd LWP::Simple не поможет

дык, так через него и закачиваю данные во втором варианте (perl-ий скрипт), а как дальше их в БД закидывать? Через фирменный модуль mysql.pm все равно тормоза получаются. Я думал можно организовать закачку данных по конвейеру, что вроде
Код: plaintext
wget http:// 192 . 10 . 0 . 34 /cli.txt | mysqlimport 

но mysqlimport не поддерживает перенаправление данных... или я что-то неправильно делаю? Или это делается по другому?

________________
С уважением, Alex Pretov
...
Рейтинг: 0 / 0
05.04.2004, 17:28
    #32469525
fedd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как закачать данные через веб?
в конвеерах не больно рублю, может, > или < поможет?

в любом случае первый вариант самый быстрый, конечно же! проблема в месте на диске?
...
Рейтинг: 0 / 0
05.04.2004, 17:52
    #32469551
AlexPretov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как закачать данные через веб?
feddв конвеерах не больно рублю, может, > или < поможет?

это и есть механизм перенаправления данных. нет, не работает.

проблемы в свободном месте, но быстрый вариант -- без промежуточных преобразований.

учитывая объем данных, то загрузка данных идет длительная, больше часа, поэтому ускорение на несколько минут уже есть хорошо.

К слову, у MySQL самая быстрая закачка данных, которую мне доводилось видеть...

________________
С уважением, Alex Pretov
...
Рейтинг: 0 / 0
05.04.2004, 20:41
    #32469740
Антон К.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как закачать данные через веб?
подождите
несколько _десятков_ тысяч записей -- больше часа?????
Это, простите, как вы добились такого результата?
...
Рейтинг: 0 / 0
05.04.2004, 21:03
    #32469748
AlexPretov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как закачать данные через веб?
больше часа идет _полная обработка_ данных. А файлов таких загружается несколько, если конкретно, то четыре штуки. в тексте предыдущего моего поста очепятка.

если интерсено, могу подсказать конкретный вариант -- организуйте закачку данных через ODBC.

________________
С уважением, Alex Pretov
...
Рейтинг: 0 / 0
06.04.2004, 08:30
    #32469935
Marat_L
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как закачать данные через веб?
Может попытаться использовать в Perl генерировать запрос множественный инсерт?
Работает в разы быстрее. Может вставлять тысячи записей на запрос.

Жизнь коротка - потерпи немного :)
...
Рейтинг: 0 / 0
06.04.2004, 12:12
    #32470343
AlexPretov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как закачать данные через веб?
MaratL Может попытаться использовать в Perl генерировать запрос множественный инсерт?

именно так и был реализован второй вариант. Скорость все равно ужасающе медленная.

к тому же график изменения производительности от кол-ва вставляемых записей в одном операторе -- чашеподобный, т.е. существует определенный оптимум. В моем случае это было порядка 200 записей.

________________
С уважением, Alex Pretov
...
Рейтинг: 0 / 0
06.04.2004, 12:51
    #32470426
Хрен
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как закачать данные через веб?
1) вам надо внимательно посмотреть на ваш my.cnf. что-то у вас с настройками не то.. десятки тыщь записей - это немного.. К примеру (сейчас глянул на некоторые свои цифры) на dual PIII- 500MHz (согласись, не самая мощная машинка) примерно 500000 записей заливаются примерно за 600 секунд. В другом месте на той же машине 100_000 записей на 120..130 сек. Еще на той-же машине - 300_000 записей на примерно 400 сек.

2) Посмотри insert delayed по документации, может быть подойдет..
...
Рейтинг: 0 / 0
06.04.2004, 14:49
    #32470673
AlexPretov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как закачать данные через веб?
Хрен2) Посмотри insert delayed по документации, может быть подойдет.
нет, не подойдет:
1) данные заливаются одним большим блоком, когда нагрузки на сервер нет -- т.е. пользователь один -- процесс загрузки данных.
2) insert delayed -- это отложенная операция записи, в данном случае смысла особого не имеет, т.к. речь идет не о единичных и разрозрозненных вставок.

________________
С уважением, Alex Pretov
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как закачать данные через веб? / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]