Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Имя БД в переменной / 6 сообщений из 6, страница 1 из 1
12.05.2015, 18:14:26
    #38956799
saxix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Имя БД в переменной
Добрый вечер. Есть довольно массивный скриптец по миграции данных из одной БД mysq в другую. Имена БД заранее не известны. Поэтому при миграции менять имена по всему скрипту - не хочется. Можно ли это как-нибудь реализовать через переменные, например?
...
Рейтинг: 0 / 0
12.05.2015, 18:29:45
    #38956806
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Имя БД в переменной
Первая команда
Код: sql
1.
USE ИмяБазыДанных


а потом используешь имена таблиц источника без указания БД.
...
Рейтинг: 0 / 0
12.05.2015, 18:43:22
    #38956810
saxix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Имя БД в переменной
AkinaПервая команда
Код: sql
1.
USE ИмяБазыДанных


а потом используешь имена таблиц источника без указания БД.
Эту команду знаю. Но у меня две базы и у некоторых таблиц одинаковые имена и поля
...
Рейтинг: 0 / 0
12.05.2015, 18:49:21
    #38956815
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Имя БД в переменной
saxix,
имя_базы.имя_таблицы.имя_поля
...
Рейтинг: 0 / 0
12.05.2015, 18:51:28
    #38956818
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Имя БД в переменной
реализовать можно если построить строку запроса в хранимке
...
Рейтинг: 0 / 0
13.05.2015, 09:34:59
    #38957057
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Имя БД в переменной
Как я понимаю, весь скрипт оформлен как хранимая процедура. То есть по сути есть один большой VARCHAR (ну или TEXT, если уж ты там совсем раздухарился).
Никто не мешает держать этот текст в служебной таблице (можно даже в MySQL базе), заменив имена баз данных источника и приёмника на некий плейсхолдер. В процедуре получить его в локальную переменную, выполнить реплейс, подставив имена баз, после чего выполнить создание процедуры. Типа:
Код: sql
1.
2.
3.
4.
5.
6.
7.
CREATE PROCEDURE migrate(src VARCHAR, dst VARCHAR) AS
BEGIN
  SELECT txt INTO @txt FROM mysql.myprocedures WHERE name='migrate';
  SET @txt=REPLACE(@txt,'sourcedatabasename',src);
  SET @txt=REPLACE(@txt,'destinationdatabasename',dst);
  SELECT @txt INTO OUTFILE 'migrate_script.sql';
END;
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Имя БД в переменной / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]