[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Работа с большим дампом базы данных
bposter
Всем привет и с тицем каму это интересно)) Столкнулся с такой проблемой, есть дамп базы данных который весит почти 0.5гиг, в ячейке где хранится текст нужно удалить все ссылки.

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

Хотел потом через дримвмвер отредактировать дамп но прога не может открыть его так как вес большой.

Что посоветуете? Как решить этот вопрос?

_____________
Вязание xe4.ru спицами.
Сайт для тестов (подопытный №543)
inpost
bposter
EmEditor может открывать по 30гб файлы.

А в целом, залей дамп внутрь MySQL, далее делай SELECT по частям, по 100-1000 записей, регуляркой их на PHP прогоняй и где надо - UPDATE. Получится очистить всё.

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
kaww
дамп читаешь построчно, удаляешь регуляркой ссылки., пишешь в файл, потом mydql db < dump.sql
bposter
В томто и проблема что UPDATE не хочет работать на эту таблицу конкретно

Вот мой супер ) скрипт правдо он не написан до конца но не это счас важно а то что не обновляет данные.

  $result = mysql_query("SELECT * FROM `bak_content`  WHERE id='15990' "); 
$myrow = mysql_fetch_array($result);

$t = preg_replace("#<a[^>]+>|</a>#is","",$myrow['fulltext']);

$result2 = mysql_query ("UPDATE bak_content SET fulltext='$t' WHERE id='15990'");
if ($result2 == 'true')
{
echo "Данные успешно обновлены.";
}
else
{
echo "<b>Данные не обновлены!</b>";
}


echo $myrow['fulltext'];


_____________
Вязание xe4.ru спицами.
Сайт для тестов (подопытный №543)
bposter
inpost , есть такая прога но как в ней это все сделать не разберусь

_____________
Вязание xe4.ru спицами.
Сайт для тестов (подопытный №543)
bposter
inpost, да и забыл написать что не то что не могу разобраться а попросту EmEditor тоже не может открыть дамп sad.gif

_____________
Вязание xe4.ru спицами.
Сайт для тестов (подопытный №543)
inpost
bposter
за 2 года можно было бы избавиться от Попова кода sad.gif
Надо смотреть то, что ты выбрал из БД, потом смотреть работу регулярки, потом проверять изменения в БД. Убеждаться, что всё прошло ок...

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
bposter
Цитата (inpost @ 23.05.2013 - 23:28)
bposter
за 2 года можно было бы избавиться от Попова кода sad.gif
Надо смотреть то, что ты выбрал из БД, потом смотреть работу регулярки, потом проверять изменения в БД. Убеждаться, что всё прошло ок...

Так и делаю, каждый шаг проверяю, сам скрипт работает если создать самому базу, не хочет обновлять именно в другой базе(в дампе)

P.S// От попова уже давно ушел, это были первые шаги только.. Счас и сам соображаю немного а если че надо ищу на http://www.php.su/

_____________
Вязание xe4.ru спицами.
Сайт для тестов (подопытный №543)
ilyaplot
на php.net ищи. Он официальный, переведен на русский

_____________
Заработай на Userator
bposter
Цитата (ilyaplot @ 24.05.2013 - 09:10)
на php.net ищи. Он официальный, переведен на русский

Там тоже бываю, к стате в php 5.5 mysql_query уже не будет

http://ua1.php.net/manual/ru/function.mysql-query.php

_____________
Вязание xe4.ru спицами.
Сайт для тестов (подопытный №543)
bposter
Добрые люди подскажите что делать? Может таблица имеет какуюто защиту от записи или обновления? Скоро понедельник и начальство начнет пилить мозг а та зарплата которую платят не позволяет оплатить консультацию, сам скрипт работает.

_____________
Вязание xe4.ru спицами.
Сайт для тестов (подопытный №543)
r3al
действительно магия прям.. на защиту от INSERT (она же запись) или UPDATE (она же обновление) у тебя бы mysql_error выскакивал.. и preg_replace тоже "работает" (он теги удаляет а текст между ними оставляет), потестил сейчас..
дабы осадить мой интерес, выполни и скажи че вернуло
$q = mysql_fetch_row(mysql_query("SELECT `fulltext` FROM `bak_content` WHERE `id` = '15990'")) or die(mysql_error());
$r = preg_replace("#<a[^>]+>|</a>#is", ' ', $q[0]);
mysql_query("UPDATE `bak_content` SET `fulltext` = '{$r}' WHERE `id` = '15990'") or die(mysql_error());
bposter
С вашим кодом просто белый экран, не че не выводит.

_____________
Вязание xe4.ru спицами.
Сайт для тестов (подопытный №543)
bposter
r3al, Спасибо выручили, экран белый но ссылка в базе почистилась, гдеж я допустил ошибку.

_____________
Вязание xe4.ru спицами.
Сайт для тестов (подопытный №543)
bposter
И так скрипт вышел такой:

set_time_limit(0);
$host = 'localhost';
$dbname = 'konfi';
$dbuser = 'root';
$dbpass = '';

mysql_connect ($host, $dbuser, $dbpass);
$db = mysql_select_db ($dbname);
mysql_query('SET NAMES UTF8');

if($db == false)
{
echo '<h1>Нет подключения к базе данных!</h1>';
exit();
}

$x=0;
while ($x<70000)
{
$q = mysql_fetch_row(mysql_query("SELECT `fulltext` FROM `bak_content` WHERE `id` = '{$x}'"));
$r = preg_replace("#<a[^>]+>|</a>#is", ' ', $q[0]);
mysql_query("UPDATE `bak_content` SET `fulltext` = '{$r}' WHERE `id` = '{$x}'");
$x++;
}


Может пригодится комуто

_____________
Вязание xe4.ru спицами.
Сайт для тестов (подопытный №543)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.