Как переключить базы данных в psql?

1082

В MySQL я использовалuse database_name;

Какой psqlэквивалент?

Бланкмэн
источник
1
Хорошо, так это о psqlвнешнем интерфейсе для PostgreSQL?
Питер Мортенсен

Ответы:

1656

В PostgreSQL вы можете использовать \connectмета-команду клиентского инструмента psql:

\connect DBNAME

или короче говоря:

\c DBNAME
Уилл Хартунг
источник
126
+1: это просто команда psql, в самом Postgres нет способа «переключиться». Фактически, psql не «переключается» в контексте MySQL, просто закрывает одно соединение и открывает другое.
rfusca
12
Так что нет шансов сделать это с SQL?
Борис
5
Так может ли это работать среди операторов SQL в .sqlфайле? например, могу ли я CREATE DATABASE mydb;следовать \connect mydb?
J86
1
@Ciwan Я уверен, что вы не можете включать psqlкоманды в файл сценария SQL.
Кенни Эвитт
183

Вы можете подключиться к базе данных с помощью \c <database>или \connect <database>.

Мегар
источник
98

В приглашении PSQL вы можете сделать:

\connect (or \c) dbname
Михаил Гольдштейн
источник
31

Вы можете выбрать базу данных при соединении с PSQL. Это удобно при использовании из скрипта:

sudo -u postgres psql -c "CREATE SCHEMA test AUTHORIZATION test;" test
Манель Клос
источник
4
Спасибо, я схожу с ума ... :)
Ричард
10

\lдля баз данных \cDatabaseName для переключения на дБ \dfдля процедур, хранящихся в конкретной базе данных

Амбриш Раджпут
источник
7

Используйте оператор ниже для переключения на разные базы данных, находящиеся в вашей RDMS postgreSQL

\c databaseName
Билал Махмуд
источник
1

Если вы хотите при запуске переключиться на конкретную базу данных, попробуйте

/Applications/Postgres.app/Contents/Versions/9.5/bin/psql vigneshdb;

По умолчанию Postgres работает на порту 5432. Если он работает на другом, обязательно передайте порт в командной строке.

/Applications/Postgres.app/Contents/Versions/9.5/bin/psql -p2345 vigneshdb;

Простым псевдонимом мы можем сделать это удобным.

Создайте псевдоним в вашем .bashrcили.bash_profile

function psql()
{
    db=vigneshdb
    if [ "$1" != ""]; then
            db=$1
    fi
    /Applications/Postgres.app/Contents/Versions/9.5/bin/psql -p5432 $1
}

Запустите psqlв командной строке, он переключится на базу данных по умолчанию; psql anotherdb, он переключится на БД с именем в аргументе при запуске.

Виньеш Раджа
источник
1

Хотя это явно не указано в вопросе, цель состоит в том, чтобы подключиться к определенной схеме / базе данных.

Другой вариант - напрямую подключиться к схеме. Пример:

sudo -u postgres psql -d my_database_name

Источник от man psql:

-d dbname
--dbname=dbname
   Specifies the name of the database to connect to. This is equivalent to specifying dbname as the first non-option argument on the command line.

   If this parameter contains an = sign or starts with a valid URI prefix (postgresql:// or postgres://), it is treated as a conninfo string. See Section 31.1.1, Connection Strings”, in the
   documentation for more information.
AlikElzin-kilaka
источник
1

Вы также можете подключиться к базе данных с другой ролью следующим образом.

\connect DBNAME ROLENAME;

или

\c DBNAME ROLENAME;
Абхишек
источник
0

Вы можете подключиться с помощью

\ c dbname

Если вы хотите увидеть все возможные команды для POSTGRESQL или SQL, выполните следующие действия:

  1. rails dbconsole (Вы будете перенаправлены в вашу текущую базу данных ENV)

  2. \? (Для команд POSTGRESQL)

или

  1. \ h (для команд SQL)

  2. Нажмите Q для выхода

Лахани Алираза
источник
-11

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

Postgres работает со схемами. Вы можете иметь несколько схем в одной базе данных. Итак, если вы работаете в одной базе данных и хотите изменить схему, вы можете сделать:

SET SCHEMA 'schema_name';

user3545770
источник
9
Это не верно. Это только изменит схему, используемую в пути поиска. База данных содержат несколько схем тех.
Все работники
@cpburnz Я согласен с вами
MangEngkus
1
В дополнение к комментарию @ cpburnz, SET SCHEMAиспользуется как SET SCHEMA 'schema_name'нет SET SCHEMA 'database_name'. Так что это способ SQL изменить схему, а не базу данных. Также это похоже на SET search_path TO schema_name. Смотрите документацию здесь или здесь .
Ибрагим Дауда