psql에서 데이터베이스를 전환하는 방법은 무엇입니까?


1081

에서 MySQL을 , 내가 사용use database_name;

psql동등한 것은 무엇입니까 ?


1
자, 이것은 psqlPostgreSQL의 프론트 엔드에 관한 것입니까?
Peter Mortensen

답변:


1655

PostgreSQL \connect에서 클라이언트 도구 psql 의 메타 명령을 사용할 수 있습니다 .

\connect DBNAME

또는 짧게 :

\c DBNAME

126
+1 : 이것은 psql 명령 일 뿐이며 Postgres 자체에는 "전환"할 수있는 방법이 없습니다. 실제로 psql은 MySQL 컨텍스트에서 "스위칭"이 아니며, 한 연결을 닫고 다른 연결을 열면됩니다.
rfusca

12
따라서 SQL로 할 기회가 없습니까?
Borys

5
그렇다면 .sql파일의 SQL 문에서 작동 할 수 있습니까? 예를 들어 내가 한 수 CREATE DATABASE mydb;다음에 \connect mydb?
J86

1
@Ciwan psqlSQL 스크립트 파일에 명령을 포함시킬 수 없다고 확신 합니다.
Kenny Evitt

183

\c <database>또는 로 데이터베이스에 연결할 수 있습니다 \connect <database>.



31

psql과 연결할 때 데이터베이스를 선택할 수 있습니다. 스크립트에서 사용할 때 편리합니다.

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

4
고마워, 나는 미쳤다 ... :)
Richard Richard



7

postgreSQL RDMS 내부에있는 다른 데이터베이스로 전환하려면 아래 명령문을 사용하십시오.

\c databaseName

1

시작할 때 특정 데이터베이스로 전환하려면 다음을 시도하십시오

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

기본적으로 Postgres는 포트 5432에서 실행됩니다. Postgres는 다른 포트에서 실행되는 경우 명령 줄에서 포트를 전달해야합니다.

/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

다음과 같이 다른 ROLE을 사용하여 데이터베이스에 연결할 수도 있습니다.

\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
이것은 잘못이다. 검색 경로에 사용 된 스키마 만 변경됩니다. 데이터베이스는 여러 포함 스키마 타를.
모든 노동자는 필수적이다

@cpburnz 동의합니다
MangEngkus

1
@cpburnz의 의견 외에도 SET SCHEMASET SCHEMA 'schema_name' not 로 사용됩니다 SET SCHEMA 'database_name'. 따라서 이것은 데이터베이스가 아닌 스키마를 변경하는 SQL 방법입니다. 또한 이것은 비슷합니다 SET search_path TO schema_name. 여기 또는 여기에있는 설명서를 참조 하십시오 .
Ibrahim Dauda
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.