powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Имя БД в переменной
6 сообщений из 6, страница 1 из 1
Имя БД в переменной
    #38956799
saxix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый вечер. Есть довольно массивный скриптец по миграции данных из одной БД mysq в другую. Имена БД заранее не известны. Поэтому при миграции менять имена по всему скрипту - не хочется. Можно ли это как-нибудь реализовать через переменные, например?
...
Рейтинг: 0 / 0
Имя БД в переменной
    #38956806
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Первая команда
Код: sql
1.
USE ИмяБазыДанных


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


а потом используешь имена таблиц источника без указания БД.
Эту команду знаю. Но у меня две базы и у некоторых таблиц одинаковые имена и поля
...
Рейтинг: 0 / 0
Имя БД в переменной
    #38956815
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
saxix,
имя_базы.имя_таблицы.имя_поля
...
Рейтинг: 0 / 0
Имя БД в переменной
    #38956818
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
реализовать можно если построить строку запроса в хранимке
...
Рейтинг: 0 / 0
Имя БД в переменной
    #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
6 сообщений из 6, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Имя БД в переменной
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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