¿Cómo cambiar bases de datos en psql?

1082

En MySQL , uséuse database_name;

¿Cuál es el psqlequivalente?

Blankman
fuente
1
OK, entonces, ¿se trata psqldel front-end para PostgreSQL?
Peter Mortensen

Respuestas:

1656

En PostgreSQL, puede usar el \connectmetacomando de la herramienta de cliente psql:

\connect DBNAME

o en resumen:

\c DBNAME
Will Hartung
fuente
126
+1: Esto es SOLO un comando psql, en Postgres, no hay forma de "cambiar". De hecho, psql no se "cambia" en el contexto de MySQL, solo cierra una conexión y abre otra.
rfusca
12
Entonces, ¿no hay posibilidad de hacerlo con SQL?
Borys
55
Entonces, ¿esto puede funcionar entre las declaraciones SQL en un .sqlarchivo? por ejemplo, ¿puedo haber CREATE DATABASE mydb;seguido por \connect mydb?
J86
1
@Ciwan Estoy bastante seguro de que no puede incluir psqlcomandos en un archivo de script SQL.
Kenny Evitt
183

Puede conectarse a una base de datos con \c <database>o \connect <database>.

meagar
fuente
98

En el indicador de PSQL, puede hacer:

\connect (or \c) dbname
Michael Goldshteyn
fuente
31

Puede seleccionar la base de datos cuando se conecta con psql. Esto es útil cuando se usa desde un script:

sudo -u postgres psql -c "CREATE SCHEMA test AUTHORIZATION test;" test
Manel Clos
fuente
44
Gracias, me estaba volviendo loco ... :)
Richard
10

\lpara bases de datos \cDatabaseName para cambiar a db \dfpara procedimientos almacenados en una base de datos particular

Rajput ambrish
fuente
9

Usando el metacomando de psql \c or \connect [ dbname [ username ] [ host ] [ port ] ] | conninfo(ver documentación ).

Ejemplo: \c MyDatabase

Tenga en cuenta que el \cy \connectmeta-comandos son mayúsculas y minúsculas .

Franck Dernoncourt
fuente
7

Use la siguiente declaración para cambiar a diferentes bases de datos que residen dentro de su RDMS postgreSQL

\c databaseName
Bilal Mahmood
fuente
1

Si desea cambiar a una base de datos específica al inicio, intente

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

Por defecto, Postgres se ejecuta en el puerto 5432. Si se ejecuta en otro, asegúrese de pasar el puerto en la línea de comando.

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

Por un simple alias, podemos hacerlo útil.

Crea un alias en tu .bashrco.bash_profile

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

Ejecutar psqlen línea de comando, cambiará a la base de datos predeterminada; psql anotherdb, cambiará a la base de datos con el nombre en argumento, en el inicio.

Vignesh Raja
fuente
1

Aunque no se menciona explícitamente en la pregunta, el propósito es conectarse a un esquema / base de datos específico.

Otra opción es conectarse directamente al esquema. Ejemplo:

sudo -u postgres psql -d my_database_name

Fuente de 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
fuente
1

También puede conectarse a una base de datos con un PAPEL diferente de la siguiente manera.

\connect DBNAME ROLENAME;

o

\c DBNAME ROLENAME;
Abhishek
fuente
0

Puedes conectarte usando

\ c nombrebd

Si desea ver todos los comandos posibles para POSTGRESQL o SQL, siga estos pasos:

  1. rails dbconsole (volverá a ingresar a su base de datos ENV actual)

  2. \? (Para comandos POSTGRESQL)

o

  1. \ h (para comandos SQL)

  2. Presione Q para salir

Lakhani Aliraza
fuente
-11

Como se menciona en las otras respuestas, debe cambiar la conexión para usar una base de datos diferente.

Postgres trabaja con esquemas. Puede tener múltiples esquemas en una sola base de datos. Entonces, si está trabajando dentro de la misma base de datos y desea cambiar el esquema, puede hacer lo siguiente:

SET SCHEMA 'schema_name';

usuario3545770
fuente
99
Esto está mal. Esto solo cambiará el esquema utilizado en la ruta de búsqueda. Una base de datos contiene múltiples esquemas ta.
Todos los trabajadores son esenciales
@cpburnz Estoy de acuerdo contigo
MangEngkus
1
Además del comentario de @ cpburnz, SET SCHEMAse usa como SET SCHEMA 'schema_name'no SET SCHEMA 'database_name'. Entonces, esta es una forma SQL de cambiar el esquema, no la base de datos. También esto es similar a SET search_path TO schema_name. Ver documentación aquí o aquí .
Ibrahim Dauda