![]() |
Проблема с конвертацией базы mySQL
Народ помогите решить одну проблему. Есть база mySQL с серийниками к программам около 120 000. Структура базы такая:
Код:
__ ____ ______ _______ Прблема состоит в том что я хочу разделить информацию о имени пользователя и серийнике: Код:
__ ____ ______ _______ _______Например было: Код:
INSERT INTO `base_serials` VALUES (0,'AfterCam 2.4', 'Name: LAXiTY s/n: slajwfcdmxypwdwzahwhw', 'NULL', 'NULL');Код:
INSERT INTO `base_serials` VALUES (0,'AfterCam 2.4', 'Name: LAXiTY', 's/n: slajwfcdmxypwdwzahwhw', 'NULL'); |
Ну можно сделать бекап базы а потом просто сделать замену:
s/n: на ' , 's/n: key: на ' , 'key: Ну или распарсить всю базу регулярками для надёжности... |
если я всё правильно понял, то нужно написать php скрипт с регуляркой, которая будет отделять NAME: ------ и до пробела в старой таблице и писать в новую.
т.к. записей очень много - стоит воспользоваться LIMIT. что-бы в ручную не перезапускать скрипт - можно по завершению очередного цикла обработки отображать браузеру яваскрипт, который передаст в url следующее значение limit |
Цитата:
|
всё очень сильно зависит от сервера - где всё это лежит. ;)
|
Цитата:
|
согласен.
Вот регулярку накидал Name: .*(?=s\/n) проверял на яваскрипте. работает, но нужно предварительно пробели пропарсить (что-бы 2 пробела в некоторых местах на один заменить) |
Забыл сказать, иногда бывает что имени пользователя нет, а серийник есть, его надо перебросить из name в serial и занулить name, так же иногда встречаются конструкции:
Цитата:
|
под вечер скинь в пм файлик с самыми тяжкими случаями (строк 10-20) - распарсим (я какраз недавно распарсивал бэкап мускуля так что есть наработки). мож что и выйдет.
|
я вы предложил по шагам конструкция " or " - explode
у тебя ведь дамп, так? делаем примерно: PHP код:
зы: пару не стандартных строк, если не сложно скинь лучше сюда. задачка интересная - я бы тоже подумал. |
Относительно стандартный запрос, которого большая часть в базе.
Код:
INSERT INTO `base_serials` VALUES (0,'5Xpence 3.9', 'Name: Registered User s/n: RJIVOFCIJIBV_DIJ', 'NULL', 'NULL');Код:
INSERT INTO `base_serials` VALUES (0,'Adobe Photoshop CS3 10.0', 'S/N: 1045-0415-8060-3241-4388-1406<br>Crack for PowerBook G4 below<br>Your posted removal only works with Intel Macs<br>Remove Activation for PowerBook G4<br>Left Click on Photoshop CS3 app<br>Go to Show Package Contents<br>Open Contents Folder<br>Open Resources<br>Open AMT<br>Rename the file called application.sif to application.xx<br>', 'NULL', 'NULL'); |
Цитата:
так получается, что уникальные поля тут только название проги и вот этот нейм-серийник. надо для удобства парсинга всё грамотно разбить сначала. я считаю, что удобнее всего будет для начала создать 2 тхт файла 1) - неймы 2) - серийники и прочая муть. потом привести второй файл в конструкцию вида Name:xxxxxx,s/n:xxxxxxxxx,E_mail:xxxxx и т.д. проже будет если есть возможность пообщаться по icq или skype. Пиши в личку любой контакт. |
Я думаю может с начало отделить информацию вида:
Цитата:
Есть у кого примерные скрипты или программы для этого ? |
Поставь денвер, сделай дамп своей таблицы
создай на локальном эту таблицу и напиши небольшой php скрипт PHP код:
вот замарачиваются с регурялками.... В цикле в этом можешь любую обработку данных впихнуть... Так же можешь этот скрипт кинуть сразу на сервер... тогда вообще ниче не придеся выводить )) сразу будешь в базу записывать из одной таблицы в другую.. |
Цитата:
Я прост в шоке над 90% предложений ":/ |
m0Hze, у меня просто были ситуации, когда нужно перенести информацию из совершенно другой структуры таблицы в новую (при апгрейде новой cms) и замарачиватся с дампами или шаманить над SQL запросами было ленивее чем накатать скрипт...
А ЧТО ПРЕДЛАГАЕШЬ ТЫ? :) |
Предлогаю:
1)Сливаем дамп мускула. 2)Распарсиваем его регулярками из файла. 3)если в пункте 2,мы не добились полностью того чего хотели,то парсим результаты 2) еще раз 3) Вгоняем дамп в мускул. Или-же, с помощью стандартных мускул-запросов,прямо в БД сделать нужные нам операции. |
Пробовал распарсить, с начало избавился от всего html в базе, потом сделал чтобы выводились строки в которых есть
Цитата:
во втором файле вышло около 30% базы, короче я забил и не стал ипать мозг. Сделал просто запись информации из soft и serial в переменные и скачивание файла txt c содержанием: Код:
.......+--^----------,--------,-----,--------^-,Содержимое архива: Код:
serial.txt (содержимое файла выше) |
Насчет архива если сайт хостится на unix сервере комманды tar, bzip2 - ищи описание в нете... файлы скриптом создаешь в /tmp/{random}/ и system('tar ...'); архив готов.
можешь сохранять архивы чтобы патом не делать их заного просто копируя их в нужную папку и занося данные в таблицу.... |
| Время: 06:39 |