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

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

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

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

26 ответов

30 просмотров

Еще можно разместить все в одной базе в разных 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, работаю с ним, прибиваю. На следующей итерации всё сначала.

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта