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

217

Я начинаю с PostgreSQL.

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

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

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

Теги:
postgresql-9.1

4 ответа

219
Лучший ответ

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

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

  • 0
    Спасибо kgrittn за ваше ценное руководство. Можете ли вы сказать мне, как я могу установить новое соединение с базой данных и закрыть предыдущее с помощью запроса pgscript?
  • 0
    Я не знаком с pgscript. Если это язык, на котором вы пишете функции, ответ таков: это невозможно. Может быть, вам стоит рассмотреть возможность размещения таблиц в разных схемах вместо разных баз данных ?
Показать ещё 6 комментариев
130

Вы должны указать базу данных для использования при подключении; если вы хотите использовать 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, а остальное на мой взгляд.

5

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

SET search_path TO your_db_name;

0

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

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

Пример:

SET search_path = different_schema_name;

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню