Команда «использовать имя_базы_данных» в PostgreSQL

367

Я новичок в PostgreSQL.

Я хочу подключиться к другой базе данных из редактора запросов Postgres - например, USEкоманды MySQL или MS SQL Server.

Я нашел \c databasenameпутем поиска в Интернете, но он работает только на PSQL . Когда я пытаюсь сделать это из редактора запросов PostgreSQL, я получаю синтаксическую ошибку.

Я должен изменить базу данных с помощью pgscripting. Кто-нибудь знает как это делать?

Сэм
источник
Возможный дубликат Как переключить базы данных в PSQL?
Алик Эльзин-килака
Другой вариант - напрямую подключиться к схеме. Пример: sudo -u postgres psql -d my_database_name. Источник
АликЭльзин-Килака

Ответы:

383

Когда вы получаете соединение с PostgreSQLним всегда к определенной базе данных. Чтобы получить доступ к другой базе данных, вы должны получить новое соединение.

Использование \cв psql закрывает старое соединение и получает новое, используя указанную базу данных и / или учетные данные. Вы получаете совершенно новый внутренний процесс и все.

kgrittn
источник
Спасибо kgrittn за ваше ценное руководство. Можете ли вы сказать мне, как я могу установить новое соединение с базой данных и закрыть предыдущее с помощью запроса pgscript?
Сам
Я не знаком с pgscript. Если это язык, на котором вы пишете функции, ответ таков: это невозможно. Может быть, вам стоит рассмотреть возможность размещения таблиц в разных схемах вместо разных баз данных ?
kgrittn
2
Запрос не может изменить базу данных в PostgreSQL.
кгритт
Спасибо kgrittn за всю вашу помощь .. :)
Сэм
8
Если я не ошибаюсь, базы данных в MySQL больше похожи на схемы в PostgreSQL - вы можете переключаться между ними, но базы данных в PostgreSQL - это совершенно другая игра.
mpen
213

Вы должны указать базу данных для использования при подключении; если вы хотите использовать psql для своего скрипта, вы можете использовать "\ c name_database"

user_name=# CREATE DATABASE testdatabase; 
user_name=# \c testdatabase 

В этот момент вы можете увидеть следующий вывод

You are now connected to database "testdatabase" as user "user_name".
testdatabase=#

Обратите внимание, как меняется подсказка. Ура, только что суетился в поисках этого, слишком мало информации о postgreSQL по сравнению с MySQL и остальными, на мой взгляд.

Евгений
источник
25

В pgAdmin вы также можете использовать

SET search_path TO your_db_name;

Барт Де Бек
источник
Это сработало, спасибо
YouAreAwesome
9

Основная проблема при переходе с MySQL, с которой я столкнулся, заключалась в том, что databaseв PostgreSQL я думал, что этот термин будет таким же, но это не так. Поэтому, если мы собираемся переключить базу данных из нашего приложения или pgAdmin, результат будет не таким, как ожидалось. Как и в моем случае, у нас есть отдельные схемы (учитывая терминологию PostgreSQL здесь.) Для каждого клиента и отдельная схема администратора. Поэтому в приложении я должен переключаться между схемами.

Для этого мы можем использовать SET search_pathкоманду. Это переключает текущую схему на указанное имя схемы для текущего сеанса.

пример:

SET search_path = different_schema_name;

Это изменяет current_schema на указанную схему для сеанса. Чтобы изменить его навсегда, мы должны внести изменения в postgresql.confфайл.

VPK
источник
4

Используйте эту запятую при первом подключении к psql

=# psql <databaseName> <usernamePostgresql>
Сукма Сапутра
источник