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

842

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

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

Теги:
psql

12 ответов

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

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

\connect DBNAME

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

\c DBNAME
  • 100
    +1: это просто команда psql, в самом Postgres нет способа «переключиться». Фактически, psql не «переключается» в контексте MySQL, он просто закрывает одно соединение и открывает другое.
  • 9
    Так что нет шансов сделать это с SQL?
Показать ещё 2 комментария
163

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

88

В командной строке PSQL вы можете:

\connect (or \c) dbname
22

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

\c dbname
  • 0
    найти больше помощи, используя
  • 3
    postgres- # \? Вы можете получить все ответы, которые вам нужны
Показать ещё 3 комментария
21

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

sudo -u postgres psql -c "CREATE SCHEMA test AUTHORIZATION test;" test
  • 2
    Спасибо, я схожу с ума ... :)
9

Использование мета-команды psql \c or \connect [ dbname [ username ] [ host ] [ port ] ] | conninfo (см. документация).

Пример: \c MyDatabase

Обратите внимание, что мета-команды \c и \connect case-sensitive.

8

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

6

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

0

SQL позволяет вам определять базу данных в запросе. Так почему бы просто не использовать?

SELECT 
 *
FROM 
 database.table 

Тогда вам никогда не придется "выбирать" базу данных "вручную"

Или пример кросс-базы данных JOIN

SELECT 
 *
FROM 
 world.country
INNER JOIN 
 cms.user 
ON
 country.id = user.country_id
0

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

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

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.
-8

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

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

SET SCHEMA 'schema_name';

  • 8
    Это не верно. Это только изменит схему, используемую в пути поиска. База данных содержит несколько схем та.
  • 0
    @cpburnz Я согласен с тобой
Показать ещё 1 комментарий

Ещё вопросы

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