Распарсить sql запрос

Тема в разделе "PHP", создана пользователем KillDead, 3 мар 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    883
    Симпатии:
    540
    Есть несколько дампов баз данных. Нужно извлечь данные из конкретной таблицы и конкретной колонки. Для этого наверно? нужно распарсить запрос.
    Встречал кто нормальный класс или скрипт?
     
  2. Liver

    Liver

    Регистр.:
    24 сен 2008
    Сообщения:
    316
    Симпатии:
    91
    Для этого либо пишеться регулярка по-быстрому, либо этот дамп загоняется в базу и далее как обычно запрость "SELECT * FROM" И делай с данными что-хочешь. Правда нужны минимальные знания пхп.
     
  3. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    883
    Симпатии:
    540
    Загнать в БД дамп не подходит.
    Дело осложняется различной структурой sql запроса. По-быстрому составить регулярку и учесть различную структуру не получиться.:confused:
     
  4. Inviseble_Demon

    Inviseble_Demon

    Регистр.:
    11 дек 2008
    Сообщения:
    482
    Симпатии:
    350
    Кусочек базы прикрепите...
    Думаю распарсить тогда будит проще чем в слепую.
    А ещё проще найдите в своем дампе сивол`ы которые говарят о конце и начале стосбика. И замените его на "\t"

    И получивщейся каламбур в ексель втолкните. Ексель сам разобьет по столбикам по "\t"

    Вот както так ))
     
  5. venetu

    venetu

    Регистр.:
    28 мар 2007
    Сообщения:
    735
    Симпатии:
    261
    И тем не менее, регекспами вытащить конкретно нужный тебе кусок в сто раз проще, чем разбирать ВСЕ. Кидай дамп или хотя бы кусочек, и говори что надо вытащить.
     
  6. Zander

    Zander Читатель

    Заблокирован
    Регистр.:
    6 авг 2007
    Сообщения:
    194
    Симпатии:
    36
    Дампы каких баз?
    Распарсить, видимо, все же надо не запрос, а дамп?
    Почему именно PHP? Дампы на хостинге?
     
  7. Liver

    Liver

    Регистр.:
    24 сен 2008
    Сообщения:
    316
    Симпатии:
    91
    Какое еще осложнение? там один сплошной INSERT. А если мешают связи с другими таблицами, то просто вырежи их из создания таблицы. Проще всего сделать базу данных и из нее запрашивать, как душе угодно

    Класс, который нужен для распарсивания SQL, уже давно придуман - это сама бд. Она и распарсит и переведет данные в удобную для выборки форму.
     
  8. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    883
    Симпатии:
    540
    Парсить дамп оказалось очень долго. Теперь задача стоит выполнить запрос в базу. Как это лучше сделать, если дамп весит 250 мегов? Вырезал все запросы, как только начинаю выполнять ситтуация такая:
    Первая 1000-я запросов выполняется за 3 сек.
    Но вторая 1000 уже 3,3сек.
    Потом, 1000 запросов после 50000 длится около минуты, как лучше и быстрее сделать?
    HTML:
    
    INSERT INTO `dle_post` VALUES
    (110, 'karkusha', '2007-05-15 07:04:03', '<div align=\"center\"><img src=\"http://t.foto.radikal.ru/0705/90/172dd1ade631.gif\" style=\"border: none;\" alt=\'CachemanXP v1.5.0.33\' /></div><br /><br />Cacheman XP — утилита, предназначенная для оптимизации операционных систем Windows NT/2000/XP/2003 и настройки их на оптимальную работу. Программа умеет оптимизировать дисковый кэш, кэш CD-приводов, Icon Cache, периодически очищает память, изменяет некоторые настройки операционной системы, отслеживает изменения важных параметров, отображает информацию в графическом виде, может генерировать отчеты. Режим автоматической оптимизации подходит для новичков и не требует глубоких знаний для оптимальной настройки. Возможно предварительное сохранение системных установок для возможного отката.', '<div align=\"center\"><img src=\"http://t.foto.radikal.ru/0705/90/172dd1ade631.gif\" style=\"border: none;\" alt=\'CachemanXP v1.5.0.33\' /></div><br /><br />Cacheman XP — утилита, предназначенная для оптимизации операционных систем Windows NT/2000/XP/2003 и настройки их на оптимальную работу. Программа умеет оптимизировать дисковый кэш, кэш CD-приводов, Icon Cache, периодически очищает память, изменяет некоторые настройки операционной системы, отслеживает изменения важных параметров, отображает информацию в графическом виде, может генерировать отчеты. Режим автоматической оптимизации подходит для новичков и не требует глубоких знаний для оптимальной настройки. Возможно предварительное сохранение системных установок для возможного отката.<br /><br />Серийник в архиве.<br /><br /><a href=\"http://depositfiles.com/files/865790\" target=\"_blank\">Скачать CachemanXP v1.5.0.33</a> 1.32 MB', '', 'CachemanXP v1.5.0.33', 'Cacheman XP — утилита, предназначенная для оптимизации операционных систем Windows NT2000XP2003 и настройки их на оптимальную работу. Программа умеет оптимизировать дисковый кэш, кэш CD-прив', 'настройки, оптимизации, подходит, отчеты, Режим, генерировать, автоматической, может, параметров, отображает, информацию, графическом, новичков, глубоких, системных, установок, возможного, отката, сохранение, предварительное', '2', 'cachemanxp_v15033', 0, 1, 1, 1, 1, 0, 0, 1, 0, 164, 0, '', '0000-00-00', '', 0, '', '', '', 0, ''),
    (3405, 'Artemxxx', '2008-02-14 15:08:29', '<div align=\"center\"><img src=\"http://i046.radikal.ru/0802/59/d7c4c526c267.jpg\" style=\"border: none;\" alt=\'Много фотографий интимных мест девушек крупным и очень крупным планом. Очень красиво и воз\' title=\'Много фотографий интимных мест девушек крупным и очень крупным планом. Очень красиво и воз\' /></div><br /><br />Много фотографий интимных мест девушек крупным и очень крупным планом. Очень красивo<br />', '<div align=\"center\"><img src=\"http://i046.radikal.ru/0802/59/d7c4c526c267.jpg\" style=\"border: none;\" alt=\'Много фотографий интимных мест девушек крупным и очень крупным планом. Очень красиво и воз\' title=\'Много фотографий интимных мест девушек крупным и очень крупным планом. Очень красиво и воз\' /></div><br /><br />Много фотографий интимных мест девушек крупным и очень крупным планом. Очень красивo<br /><br /><br />http://depositfiles.com/files/3384465<br />http://letitbit.net/download/1f5c6988831/pics-13.rar.html<br />', '', 'Много фотографий интимных мест девушек крупным и очень крупным планом. Очень красиво и воз', '', '', '9', 'mnogo-fotografijj-intimnykh-mest', 0, 1, 0, 1, 1, 0, 0, 1, 0, 83, 0, '', '0000-00-00', '', 1, '', '', '', 0, ''),
    (18, 'nik_nin', '2007-04-15 20:27:14', '<div align=\"center\"><!--TBegin--><a href=\"http://ruport.eu/uploads/posts/1176650696_20_louiseglover_128292.jpg\" onClick=\"return hs.expand(this)\" ><img src=\"http://ruport.eu/uploads/posts/thumbs/1176650696_20_louiseglover_128292.jpg\" style=\"border: none;\" alt=\'Liberty\' title=\'Liberty\' /></a><!--TEnd--></div><br /><br /><div align=\"center\"><b>Группа:</b>Liberty<br /><b>Альбом:</b> В деле<br /><b>Жанр:</b> HipHop<br /><b>Год выпуска:</b> 2007<br /><b>Звук:</b> MPEG Layer 3, 128.00 kbp/s<br /><b>Размер:</b> 51,7 MB<br /><br />Предупреждаю!!! Группа не известная, только если кто нибудь был полгода назад в казахстане в городе Уральске, тогда может и знает эту группу. Ну а в прочем не плохо поют мне понравилось.<br /><br /><img src=\"http://ruport.eu/uploads/rapid.jpg\" style=\"border: none;\" alt=\'Liberty\' title=\'Liberty\' /></div>', '<div align=\"center\"><!--TBegin--><a href=\"http://ruport.eu/uploads/posts/1176650696_20_louiseglover_128292.jpg\" onClick=\"return hs.expand(this)\" ><img src=\"http://ruport.eu/uploads/posts/thumbs/1176650696_20_louiseglover_128292.jpg\" style=\"border: none;\" alt=\'Liberty\' title=\'Liberty\' /></a><!--TEnd--></div><br /><br /><b>Группа:</b>Liberty<br /><b>Альбом:</b> В деле<br /><b>Жанр:</b> HipHop<br /><b>Год выпуска:</b> 2007<br /><b>Звук:</b> MPEG Layer 3, 128.00 kbp/s<br /><b>Размер:</b> 51,7 MB<br /><br />Предупреждаю!!! Группа не известная, только если кто нибудь был полгода назад в казахстане в городе Уральске, тогда может и знает эту группу. Ну а в прочем не плохо поют мне понравилось.<br /><br /><br />1.258 (Просто музыка)<br />2.Алкоголики<br />3.Без изменений<br />4.Весёлые рифмы<br />5.Мама<br />6.Мне просто больно видеть<br />7.Рифмосхемы<br />8.Хочу модель<br />9.Что в нашей жизни называется хорошим<br />10.NEW YEAR (Просто музыка)<br />11.Ангел Хранитель<br />12.В деле<br />13.Дерзкая соната<br />14.Мечты<br />15.Письма<br />16.Смутный сон<br />17.Чёрная ворона<br /><br /><b>Ссылка:</b><br /><br /><a href=\"http://rapidshare.com/files/25994166/Liberty.rar\" target=\"_blank\">http://rapidshare.com/files/25994166/Liberty.rar</a><br /><br />Pass: ruport.eu', '', 'Liberty', 'Предупреждаю!!! Группа не известная, только если кто нибудь был полгода назад в казахстане в городе Уральске, тогда может и знает эту группу. Ну а в прочем не плохо поют мне понравилось. П', 'группу, знает, может, прочем, понравилось, Предупреждаю, музыка, Просто, тогда, плохо, известная, Уральске, Группа, нибудь, только, назад, городе, полгода, казахстане, 13Дерзкая', '5', 'liberty', 0, 1, 1, 1, 1, 0, 5, 1, 1, 225, 0, '', '0000-00-00', 'l', 0, '', '', '', 0, ''),
    
     
  9. Kirillik

    Kirillik Создатель

    Регистр.:
    22 фев 2009
    Сообщения:
    32
    Симпатии:
    7

    Сгенерить из этого файла:

    INSERT INTO `dle_post` VALUES
    (110, 'karkusha' ....),
    (3405, 'Artemxxx'....),
    (18, 'nik_nin'....),

    подобный формат:

    INSERT INTO `dle_post` VALUES (110, 'karkusha' ....);
    INSERT INTO `dle_post` VALUES (3405, 'Artemxxx'....);
    INSERT INTO `dle_post` VALUES (18, 'nik_nin'....);

    Потом скормить его базе, можно частями
     
  10. Inviseble_Demon

    Inviseble_Demon

    Регистр.:
    11 дек 2008
    Сообщения:
    482
    Симпатии:
    350
    AkelPad вам в помощь для преобразования из
    INSERT INTO `dle_post` VALUES
    (110, 'karkusha' ....),
    (3405, 'Artemxxx'....),
    (18, 'nik_nin'....),

    в подобный формат:

    INSERT INTO `dle_post` VALUES (110, 'karkusha' ....);
    INSERT INTO `dle_post` VALUES (3405, 'Artemxxx'....);
    INSERT INTO `dle_post` VALUES (18, 'nik_nin'....);


    Открываете свой фаил через него потом ждете...
    Далее делаете подмену "(" на "INSERT INTO `dle_post` VALUES"
    Далее делаете подмену ")," на ");"
    Ну и удоляете лишнюю строку с верху "INSERT INTO `dle_post` VALUES"

    Но тут трабл 1 а именно имя таблицы... Можно зделать с помощью php но как распарсить 250 мегов я не представляю:(
     
Статус темы:
Закрыта.