Всем привет! когда-то я уже задавал этот вопрос, но не смог его найти (( В общем есть файл со строками, которые надо загнать в БД, в файле несколько сотен тысяч строк. т.е. каждая строка это запись в БД. Но при добавлении возникают проблемы, т.к. после ~ 20 000 записей база начинает висеть и очень плохо думать, проц под 100% кто может помочь скриптом который был делал добавление в БД не перегружая комп?
Если БД локальная, то через консоль, а не скриптом. Код (Text): mysql -u root -p dbname < file.sql Если на сервере, то скриптом Sypex Dumper. Спокойно импортирует БД свыше 3 Гб.
так проблема в том, что это не дамп, просто набор текста Код (Text): 1 2 3 4 5 6 ... 1000000000000 и т.д.. И надо каждую строку через insert into добавить в БД плюс, как на денвере запустить такую консоль? сразу грузить сервер не хочется )
Буквально недавно я проводил тесты и мне понадобилось 3 000 000 (три миллиона) записей. Было 3 таблицы со связью many-to-many и в каждую нужно было вставить строку (в таблицу со связями - несколько). Я написал простейший скрипт на РНР, который это делал. Да, на заполнение ушла не минута, а целый рабочий день + ночь, но я в это время мог спокойно сидеть и работать. Ничего не грузило. Машинка так себе: Intel Core 2 Duo T8100 (2.1GHz), 2GB - 2 DIMM (DDR2-667). Я не знаю, в чем конкретно у тебя проблема. Показывай скрипт, что ли.
Я всё же не понял, что за формат... если типа CSV (только с разделителем не запятая), то можно попробовать DbForge - я 200 000 из CSV импортировал, пару минут заняло.
PHP: <? $handle = fopen("./word/".$_GET['file'], "r"); while (!feof($handle)) { $buffer = fgets($handle); $sql_res = mysql_fetch_row(mysql_query('SELECT count(*) FROM `data` WHERE `data_string` = "'.$buffer.'" LIMIT 1')); if ($sql_res[0] == 0) { mysql_query("INSERT INTO `data` VALUES ('', '".$date."','."$buffer".')") or die (mysql_error()); } } Что-то типа такого