Команда "use database_name" в PostgreSQL
Я начинаю с PostgreSQL.
Я хочу подключиться к другой базе данных из редактора запросов Postgres - например, команды USE
для MySQL или MS SQL Server.
Я нашел \c databasename
, выполнив поиск в Интернете, но работает только на psql. Когда я пытаюсь использовать его в редакторе запросов PostgreSQL, я получаю синтаксическую ошибку.
Мне нужно изменить базу данных с помощью pgscripting. Кто-нибудь знает, как это сделать?
Ответы
Ответ 1
Когда вы получаете соединение с PostgreSQL, оно всегда относится к конкретной базе данных. Чтобы получить доступ к другой базе данных, вы должны получить новое соединение.
Использование \c
в psql закрывает старое соединение и приобретает новый, используя указанную базу данных и/или учетные данные. Вы получаете совершенно новый интерфейс и все.
Ответ 2
Вы должны указать базу данных для использования при подключении; если вы хотите использовать psql для своего script, вы можете использовать "\ c name_database"
user_name=# CREATE DATABASE testdatabase;
user_name=# \c testdatabase
В этот момент вы можете увидеть следующий вывод
You are now connected to database "testdatabase" as user "user_name".
testdatabase=#
Обратите внимание, как изменяется запрос. Cheers, просто торопились в поисках этого слишком, слишком мало информации о postgreSQL по сравнению с MySQL, а остальное на мой взгляд.
Ответ 3
В pgAdmin вы также можете использовать
SET search_path TO your_db_name;
Ответ 4
Основная проблема при миграции из MySQL, с которой я столкнулся, заключалась в том, что термин database
тоже был таким же в PostgreSQL, но это не так. Поэтому, если мы собираемся переключить базу данных из нашего приложения или pgAdmin
, результат будет не таким, как ожидалось.
Как и в моем случае, у нас есть отдельные схемы (учитывая терминологию PostgreSQL здесь.) Для каждого клиента и отдельную схему администратора. Поэтому в приложении мне нужно переключаться между схемами.
Для этого мы можем использовать команду SET search_path
. Это переключает текущую схему на указанное имя схемы для текущего сеанса.
Пример:
SET search_path = different_schema_name;
Это изменяет current_schema на указанную схему для сеанса. Чтобы изменить его навсегда, мы должны внести изменения в файл postgresql.conf
.