С нами с 03.10.08
Сообщения: 129
Рейтинг: 141
|
Добавлено: 11/10/08 в 19:09 |
Допустим имеем тхт документ в котором 1млн строк с информацией.
Нужно каждую строку записать в таблу. Это проблем не вызывает, а вот как сделать чтобы запись была более менее быстрой или хотяб не держать открытым браузер?
Я допусит пишу так: открываем файл тхт, каждоя строка как массив. Далее открываем цикл, пишем массив в бд, i++. Может еще что-то можно придумать?
|
|
|
|
« ... 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 - и скормить ему напрямую
|
|
|
|
Самый добрый бегемот
С нами с 24.06.03
Сообщения: 954
Рейтинг: 574
|
Добавлено: 11/10/08 в 21:20 |
А LOAD DATA INFILE чем не устроил?
Как работает читать на dev.mysql.com
|
|
|
|
С нами с 16.04.05
Сообщения: 754
Рейтинг: 352
|
Добавлено: 11/10/08 в 21:24 |
мои 5 копеек: написать скрипт который превратит файл в sql запросы к базе, причём в каждом запросе должна быть последовательность вставки примерно 10k строк
Ну а затем, естественно, скормить через шелл этот файл мускулю
|
|
|
|
С нами с 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) и все поля пустые. Один пробел и все.
|
|
|
|
С нами с 16.04.05
Сообщения: 754
Рейтинг: 352
|
Добавлено: 12/10/08 в 01:10 |
Это ты не правильный код пишешь
должно быть вот так (в файле 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
....попиздыкали ....
|
|
|
|
Текстовая реклама в форме ответа Заголовок и до четырех строчек текста Длина текста до 350 символов Купить рекламу в этом месте! |