Как быстро проставить префикс таблиц в 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.sh471 байт

Комментарии


Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Применить"
Опубликовано PG в сб, 05/02/2005 - 23:57.

Предположим, у нас нет под рукой юникса.


Опубликовано axel в пн, 07/02/2005 - 01:44.

Тогда последовательность чуть удлинняется.

1) ставим юникс
2) используем скрипт выше

А какие ещё могут быть варианты? ;)

--
Axel,
www.axel.drupal.ru


Опубликовано Оранжевый Удав в пн, 20/06/2005 - 22:56.

Ну и зачем народ юниксом пугать лишний раз? :)))

Итак , допустим нам надо приделать префикс drupal_ к именам всех таблиц.
Делаем дамп базы. Открываем (в) практически любом текстовом редакторе (но лучше чтобы он понимал utf8) и выполняем следующие поиск с заменой:

CREATE TABLE ` заменяем на CREATE TABLE `drupal_
INSERT INTO ` заменяем на INSERT INTO `drupal_
REPLACE ` заменяем на REPLACE `drupal_
ALTER TABLE ` заменяем на ALTER TABLE `drupal_

впринципе должно хватить и первых двух

логично предположить что при экспорте вы указали опцию "обратные апострофы в названиях таблиц"


Опубликовано neochief в ср, 20/02/2008 - 03:02.

не забудьте в таблице sequences добавить префикс ко всеи полям name


Опубликовано SaBoNim в пт, 25/04/2008 - 07:17.

не забудьте в таблице sequences добавить префикс ко всеи полям name
Не подскажете, как это сделать?


Опубликовано neochief в пт, 25/04/2008 - 11:03.

К примеру, кусок дампа выглядит так:

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_


Новое на сайте

Ссылки партнёров