Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как выдрать из дампа четыре поля?
 
 автор: veland   (06.04.2006 в 13:46)   письмо автору
 
 

Вопрос к знатокам. Есть дамп:
INSERT INTO table1 VALUES (8,5418,0,'Универсальная искусственная кровь!','Группа исследователей из трех крупных японских университетов разработала новую формулу искусственной крови, которая в ближайшее время сможет успешно устранить опасность заражения вирусами и будет абсолютно совместимой с любой группой крови при ее переливании. Это основные недостатки естественной крови, ограничивающие ее применение и на борьбу с которыми потрачено немало денег, времени и усилий. ','','',NULL,'','',NULL,'',NULL,NULL,NULL,1,NULL,'Относительно недавно подобного рода изобретения синтетических аналогов крови уже имели место. Перфторан, или <голубая кровь> - искусственный аналог, действительно голубого цвета, созданный на основе соединений фтора, со значительной способностью пассивно переносить кислород благодаря высокой химической активности фтора. И все бы ничего, но дорого, пассивно и фтор вреден для организма по многим показателям.',0,0,NULL,NULL,NULL,0,'','','','/news/21473',0,0,0,'2004-03-22',NULL,8,5418,0,0,0,0,0,0,21473,'1','1','','','','','','','','-d-s-a-','0','order by id','21473',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'','0',0);

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

Заранее спасибо!

   
 
 автор: Trianon   (06.04.2006 в 13:51)   письмо автору
 
   для: veland   (06.04.2006 в 13:46)
 

Во блин пардон.
А не проще ли в базу этот дамп закатать, а из table1 уже выдернуть нужные столбики?
Всяко будет прямее и быстрее.

   
 
 автор: veland   (06.04.2006 в 13:54)   письмо автору
 
   для: Trianon   (06.04.2006 в 13:51)
 

Trianon, ты ГОЛОВА! На самом деле так будет проще.

   
 
 автор: veland   (06.04.2006 в 15:48)   письмо автору
 
   для: Trianon   (06.04.2006 в 13:51)
 

Мда, Трианон, хоть ты и голова, но твой вариант не проходит. Дамп слишком большой, всё равно приходится из него нужную информацию выцарапывать. Поэтому вопрос остаётся в силе (см. Выше).

   
 
 автор: Trianon   (06.04.2006 в 16:18)   письмо автору
 
   для: veland   (06.04.2006 в 15:48)
 

Если он такой большой, что не помещается в MYSQL - однозначно в PHP целиком он не войдет. А раз так, никто не мешает его обрабатывать по частям.
В цикле
стираем таблицу, Читаем 100 (или меньше, если последняя порция) строк, засовываем в таблицу, выдираем данные, выводим в файл.

Только я почему-то думаю, что дело не в том, что MYSQL не выдерживает величины дампа, а в том, что Вы его через PHP пропускаете. Через phpMyAdmin наверное....
а в PHP ограничение... на размер файла.

   
 
 автор: veland   (06.04.2006 в 16:26)   письмо автору
 
   для: Trianon   (06.04.2006 в 16:18)
 

Дело даже не в том, что я его через phpMyAdmin пропускаю, я его всё равно по частям разбиваю этот дамп, основная причина - это то, что в нём могут попадаться ошибки, импорт останавливается, приходится искать где остановился и устранять ошибку - гемморой тот еще, а размер дампа около 29 метров :-(((. Выдрав из дампа то, что мне нужно (отмеченное жирным), я вставляю его в другой дамп, уже соответствующий структуре таблицы, у меня есть скрипт, который это делает, но он не на регулярных выражениях и потому работает не надёжно.

Прошу помощи! Нужно извлечь только четыре поля!

   
 
 автор: Саша   (06.04.2006 в 16:49)   письмо автору
 
   для: veland   (06.04.2006 в 16:26)
 

можно с помощью explode разбивать каждую строку по "," и затем нужные елементы масива записывать куда нужно

   
 
 автор: Trianon   (06.04.2006 в 16:57)   письмо автору
 
   для: veland   (06.04.2006 в 16:26)
 

Пока гуру думают....

Если в дампе ошибки - ситуация в корне меняется. Дело в том, что регулярное выражение их не исправит. Я бы сделал так.
Загружал дамп порциями, которые система пропускает. По одной строке заводил бы их в таблицу. Каждый отвергнутый запрос добавлял бы в отдельный файл - дамп ошибочных строк.
И с ними уже возился бы отдельно.
Обычно, если дамп получен кривым дампером, это ошибки экранирования кавычек.

Между прочим. Я проходил уже такую беду. Только дамп весил метров 50. Так что сочувствую Вам вполне осознанно.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования