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


Відповіді:


1655

У PostgreSQL ви можете використовувати \connectметакоманду клієнтського інструменту psql:

\connect DBNAME

або коротше:

\c DBNAME

126
+1: Це ТАКЕ команда psql, у самому Постгресі немає способу "переключитися". Насправді psql не "перемикається" в контексті MySQL, просто закриває одне з'єднання і відкриває інше.
rfusca

12
Тож немає шансів зробити це за допомогою SQL?
Borys

5
То чи може це працювати серед операторів SQL у .sqlфайлі? наприклад, чи можу я CREATE DATABASE mydb;слідувати за цим \connect mydb?
J86

1
@Ciwan Я впевнений, що ви не можете включати psqlкоманди у файл сценарію SQL.
Кенні Евітт

183

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



31

Ви можете вибрати базу даних під час з'єднання з psql. Це зручно при використанні його зі сценарію:

sudo -u postgres psql -c "CREATE SCHEMA test AUTHORIZATION test;" test

4
Дякую, я став божевільним ... :)
Річард



7

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

\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, при запуску він перейде до db з ім'ям в аргументі.


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.

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';


9
Це неправильно. Це змінить лише схему, яка використовується на шляху пошуку. База даних містить кілька схем ta.
Усі працівники найважливіші

@cpburnz Я згоден з вами
MangEngkus

1
На додаток до коментаря @ cpburnz, SET SCHEMAвикористовується як SET SCHEMA 'schema_name'ні SET SCHEMA 'database_name'. Отже, це спосіб SQL змінити схему, а не базу даних. Також це схоже на SET search_path TO schema_name. Дивіться документацію тут або тут .
Ібрагім Дауда
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.