Реклама на сайте Advertise with us

Ускорить работу записи в БД

Расширенный поиск по форуму
 
Новая тема Новая тема   
Автор
Поиск в теме:



С нами с 03.10.08
Сообщения: 129
Рейтинг: 141

Ссылка на сообщениеДобавлено: 11/10/08 в 19:09       Ответить с цитатойцитата 

Допустим имеем тхт документ в котором 1млн строк с информацией.
Нужно каждую строку записать в таблу. Это проблем не вызывает, а вот как сделать чтобы запись была более менее быстрой или хотяб не держать открытым браузер?

Я допусит пишу так: открываем файл тхт, каждоя строка как массив. Далее открываем цикл, пишем массив в бд, i++. Может еще что-то можно придумать?

0
 

« ... full on ... »

С нами с 17.03.07
Сообщения: 670
Рейтинг: 1686

Ссылка на сообщениеДобавлено: 11/10/08 в 19:32       Ответить с цитатойцитата 

Делать инсёрты по 100-200 за раз, т.е. один вызов инструкции insert и вставка сразу 100-200 строк и т.д.

Чтобы браузер закрыть - ignore_user_abort поставить в скрипте.
Если читаешь сразу весь текстовый файл в скрипт, то это дофига памяти - читай файл потоком по мере записи в базу.

Power of the lime madness...

3
 



С нами с 21.09.03
Сообщения: 7329
Рейтинг: 2144

Ссылка на сообщениеДобавлено: 11/10/08 в 19:54       Ответить с цитатойцитата 

Написать маленький скрипт на перле-шелле, который превратит файл txt в файл с командами для mysql - и скормить ему напрямую icon_smile.gif

Моя подпись.

3
 

Самый добрый бегемот

С нами с 24.06.03
Сообщения: 954
Рейтинг: 574

Ссылка на сообщениеДобавлено: 11/10/08 в 21:20       Ответить с цитатойцитата 

А LOAD DATA INFILE чем не устроил?
Как работает читать на dev.mysql.com

3
 



С нами с 16.04.05
Сообщения: 754
Рейтинг: 352

Ссылка на сообщениеДобавлено: 11/10/08 в 21:24       Ответить с цитатойцитата 

мои 5 копеек: написать скрипт который превратит файл в sql запросы к базе, причём в каждом запросе должна быть последовательность вставки примерно 10k строк icon_smile.gif

Ну а затем, естественно, скормить через шелл этот файл мускулю

Мой блог: seo blog

0
 



С нами с 03.10.08
Сообщения: 129
Рейтинг: 141

Ссылка на сообщениеДобавлено: 11/10/08 в 22:22       Ответить с цитатойцитата 

Чет не получается, создал таблицу c полями id(auto_increment) и title варчар. Пишу код так:

Код:
$result = mysql_query("LOAD DATA INFILE 'data.txt' INTO TABLE td LINES TERMINATED BY '\n'") or die(mysql_error());


в data.txt следующее:

Код:

vse
polya
zapolnim
shas
dermom
etim


Он лежит в mysql\data\block

Создает 6 полей (ровно столько, сколько записей в data.txt) и все поля пустые. Один пробел и все.

0
 



С нами с 16.04.05
Сообщения: 754
Рейтинг: 352

Ссылка на сообщениеДобавлено: 12/10/08 в 01:10       Ответить с цитатойцитата 

Это ты не правильный код пишешь icon_smile.gif

должно быть вот так (в файле dump.sql):
INSERT INTO table_name (id, title) VALUES (1, 'title1'), (2, 'title2'),....(10000, 'title10000');
....

А далее, mysql -uUSER_NAME -pPASSWORD -hHOST_NAME DATABASE_NAME
ПРИВЕТ! Я МУСКУЛЬ! ХОЧЕШЬ МЕНЯ ПОЮЗАТЬ?
>source ./dump.sql

....попиздыкали ....

Мой блог: seo blog

4
 
Новая тема Новая тема   

Текстовая реклама в форме ответа
Заголовок и до четырех строчек текста
Длина текста до 350 символов
Купить рекламу в этом месте!


Перейти:  



Спонсор раздела Стань спонсором этого раздела!

Реклама на сайте Advertise with us

Опросы

Рецепт новогоднего блюда 2022



Обсудите на форуме обсудить (11)
все опросы »