172 похожих чатов

Добрый вечер! Подскажите, можно ли изменить базу данных используя SQL?

Например, в MySQL можно подать запрос: use database.

Пока на ум приходит только вот такая штука:
SELECT dblink_connect('hostaddr=HOST port=PORT dbname=REMOTE_DBNAME user=USERNAME password=PASS');
SELECT * FROM dblink();

26 ответов

10 просмотров

Еще можно разместить все в одной базе в разных schema

Игорь- Автор вопроса
D
Еще можно разместить все в одной базе в разных sch...

Так не пойдёт. Всё уже работает в проде. Мне нужно лишь перебрать базы и внести в них изменения. Топорно я задачу решу. Хотелось бы красиво. Вообще удивлён, что в PostrgeSQL нет методов для смены базы данных в пределах одного сервера.

Игорь- Автор вопроса
Антон Казачков
В psql есть, в общем диалекте - нет

Я понимаю, но я работаю во фреймворке и ограничен возможностями PDO. Обращаться к внешнему процессу будет не очень удачной идеей. Просто в моём случае придётся отказаться от ORM фреймворка и напрямую создавать объект PDO, а потом уничтожать и создавать новый, присоединённый к другой базе.

Игорь
Я понимаю, но я работаю во фреймворке и ограничен ...

А функици этот ваш орм умеет вызывать и селектить из них?

Игорь
Так не пойдёт. Всё уже работает в проде. Мне нужно...

а как вы себе это представляете? ну вот сменили вы базу конекшена и у вас весь блин микросервис вдруг обнаруживает что вместо запросов к базе A у него теперь подключение к базе B и пошло поехало

Игорь- Автор вопроса
central hardware
а как вы себе это представляете? ну вот сменили вы...

Очень просто представляю. Есть 46 баз. Надо зайти в каждую по очереди и внести изменения в данные. Я надеялся что postgres умеет базы переключать. Но нет.

Игорь
Очень просто представляю. Есть 46 баз. Надо зайти ...

Ну вот dblink_exec делать в каждую, в цикле, все внутри процедуры в постгресе. его силами. Не вариант?

Игорь- Автор вопроса
D
Ну вот dblink_exec делать в каждую, в цикле, все в...

Эх, облом, там сервер - десятка. dblink_exec нету.

так вы на клиенте и переключайте: $db = pdo_connect('db1'); pdo_exec($db, $query); $db = pdo_connect('db2'); pdo_exec($db, $query); $db = pdo_connect('db3'); pdo_exec($db, $query); ...

Игорь- Автор вопроса
S B
так вы на клиенте и переключайте: $db = pdo_connec...

Это откуда такие функции? Там же new PDO($conStr);

Игорь
Это откуда такие функции? Там же new PDO($conStr);

это выдуманные функции для примера алгоритма

Игорь- Автор вопроса
S B
это выдуманные функции для примера алгоритма

Ну там не так работает. Там полностью создание нового объекта. Невозможно переключить базу. Я собственно с утра уже всё сделал.

Игорь
Ну там не так работает. Там полностью создание нов...

и в чём проблема новый объект создать? :-)

Игорь- Автор вопроса
S B
и в чём проблема новый объект создать? :-)

Проблемы нету. Просто в рамках парадигмы фреймворка выглядит несколько некузяво. Получается, что я обращаюсь к БД не средствами фреймворка, а минуя его абстракции. Потом придёт другой программер и несколько офигеет.

Игорь- Автор вопроса
S B
почему минуя? одна база — один объект

Потому, что во фреймворке есть собственные классы для работы с базой. И они создаются и инициализируются под капотом. И я не нашёл способа переключить их на другую базу. Точнее способ есть, но он не лучше, чем работать через PDO. Там надо будет динамически жонглировать конфигурацией, а с учётом того, что она кешериутеся, ну его наф.

Игорь
Потому, что во фреймворке есть собственные классы ...

аа, вы про фреймворк который поверх pdo, понял

Игорь- Автор вопроса
S B
аа, вы про фреймворк который поверх pdo, понял

во-во, истинно так. Мой вопрос как раз состоял в том, как переключить базу. Правильный ответ - никак. PostrgreSQL этого не умеет.

Игорь
Потому, что во фреймворке есть собственные классы ...

они не инициируются под капотом .. а непосредственно параметрами из конфигурации .. сделайте несколько инстансов db1, db2 и прокидывайте когда Вам надо и куда надо

Игорь- Автор вопроса

Верно. Но если заранее известно колечество баз. А если это делается динамически, да ещё этих баз под сотню...

Игорь
Проблемы нету. Просто в рамках парадигмы фреймворк...

ну как то меня всю жизнь учили, что нельзя привязіваться обьектами к конкретной базе, а все хранить или создавать в конфигурационных файлах... И вообще я всегда в фреймворке первым делом писал объект для работы с базой данных, а уже дальше работал через него...

Игорь- Автор вопроса
Владимир Наумов
ну как то меня всю жизнь учили, что нельзя привязі...

Я не привязываюсь объектами к базе. Я в цикле перебираю данные для коннекта. Создаю PDO, работаю с ним, прибиваю. На следующей итерации всё сначала.

Похожие вопросы

Обсуждают сегодня

Скажите, можно ли как-то "переместить" динамический массив из одной переменной в другую? Скажем, переместить из TList<> в TArray<>. Именно переместить, а не скопировать. Если ...
Eugene Krasnikov (ᴊɪɴ x)
37
комрады, че-та лыжы не едут var tmpFont: TFont; begin tmpFont:= TFont.Create; try case rgFontColor.ItemIndex of 0: tmpFont.Color:= clWindowText; 1: tmpFo...
Ed Doc
34
.model small .stack 100h .data a db 'Hello, World!', '$' ; исходная строка b db 20 dup(?) ; строка b с запасом на максимальную длину .code main: ...
Алексей -man
3
вопрос, кого посмотреть в ютубе или где почитать про указатели чтобы раз и навсегда запомнить зачем они нужны и как правильно ими пользоваться? поделитесь хорошими ресурсами, ...
-
14
М-да. Почему бы просто со stringlist не работать?
Michael Longneck
23
Интересно, нет ли какого-то способа получить из dll не адрес самой метки, а адрес со смещением?
The Bird of Hermes
54
Редактор листа Excel, по сути двумерный массив ячеек. Ячейка - это экземпляр класса, у нее всякие свойства, методы. Проблема в том, что количество используемых строк и колоно...
Sergey Bodrov
2
Is there a digital way to cut the electricity from a usb in linux? It sounds weird, but it's exactly what I need to do. I tried to simulate the unplug/replug but is not the ...
Eduard Rivas
15
Добавляю 100 тыс слов в TListBox. Перемешаю скролл (от ListBox). После примерно 65536 скролл резко прыгает вверх. Это что за глюк? Как фиксить, кто-нибудь знает?
Eugene Krasnikov (ᴊɪɴ x)
8
Вопрос к знатокам. Есть интерфейс в нем метод. От него 2 класса. В каждом классе метод возвращает разный тип. Так можно?
Ivan Petrovich
8
Карта сайта