Как быстро проставить префикс таблиц в SQL-дампе?
Прислано: axel
пн, 22/11/2004 - 21:38
Drupal позволяет использовать префикс к таблицам БД, чтобы их имена например не путались с таблицами других скриптов. Но инсталлятор движка издавна отличается особым аскетизмом (tar xfvz и т.д.) и утилиты для смены префикса не предоставляет. Но надо ли оно, когда под рукой есть unix:
$ PRFX=prefix_; sed "s/^CREATE TABLE /CREATE TABLE $PRFX/; s/^INSERT INTO /INSERT INTO $PRFX/; s/^REPLACE /REPLACE $PRFX/; s/^ALTER TABLE /ALTER TABLE $PRFX/" database.mysql >prefixed_database.mysql
Этот код должен быть исполнен из командной строки в той директории, где лежит дамп оригинальной базы. В переменной PRFX мы задаем свой префикс к таблицам (prefix_ в примере), готовый дамп будет записан в prefixed_database.mysql.
Вот почему в Drupal до сих пор нет инсталлятора - потому что самый удобный инсталлятор это сам unix ;)
PS. Полный вариант скрипта прикреплен к этой странице - см. ссылку ниже.
PS2. Скрипт добавлен в CVS Drupal (HEAD) и доступен в каталоге /scripts.
| Прикрепленный файл | Размер |
|---|---|
| prefix.sh | 471 байт |
- Для комментирования войдите или зарегистрируйтесь
Предположим, у нас нет под рукой юникса.
- Для комментирования войдите или зарегистрируйтесь
Тогда последовательность чуть удлинняется.
1) ставим юникс
2) используем скрипт выше
А какие ещё могут быть варианты? ;)
--
Axel,
www.axel.drupal.ru
- Для комментирования войдите или зарегистрируйтесь
Ну и зачем народ юниксом пугать лишний раз? :)))
Итак , допустим нам надо приделать префикс drupal_ к именам всех таблиц.
Делаем дамп базы. Открываем (в) практически любом текстовом редакторе (но лучше чтобы он понимал utf8) и выполняем следующие поиск с заменой:
CREATE TABLE ` заменяем на CREATE TABLE `drupal_
INSERT INTO ` заменяем на INSERT INTO `drupal_
REPLACE ` заменяем на REPLACE `drupal_
ALTER TABLE ` заменяем на ALTER TABLE `drupal_
впринципе должно хватить и первых двух
логично предположить что при экспорте вы указали опцию "обратные апострофы в названиях таблиц"
- Для комментирования войдите или зарегистрируйтесь
не забудьте в таблице sequences добавить префикс ко всеи полям name
- Для комментирования войдите или зарегистрируйтесь
не забудьте в таблице sequences добавить префикс ко всеи полям name
Не подскажете, как это сделать?
- Для комментирования войдите или зарегистрируйтесь
К примеру, кусок дампа выглядит так:
INSERT INTO `sequences` VALUES ('users_uid', 1);
INSERT INTO `sequences` VALUES ('menu_mid', 56);
INSERT INTO `sequences` VALUES ('view_view_vid', 1);
Заменяем VALUES (' на VALUES ('prefix_
- Для комментирования войдите или зарегистрируйтесь





Комментарии