Comment changer de base de données en psql?

1082

Dans MySQL , j'ai utiliséuse database_name;

Quel est l' psqléquivalent?

Blankman
la source
1
OK, il s'agit donc psqldu front-end pour PostgreSQL?
Peter Mortensen

Réponses:

1656

Dans PostgreSQL, vous pouvez utiliser la \connectméta-commande de l'outil client psql:

\connect DBNAME

ou en bref:

\c DBNAME
Will Hartung
la source
126
+1: Il s'agit JUSTE d'une commande psql, dans Postgres même, il n'y a aucun moyen de "basculer". En fait, psql ne "change" pas dans le contexte MySQL, il suffit de fermer une connexion et d'en ouvrir une autre.
rfusca
12
Il n'y a donc aucune chance de le faire avec SQL?
Borys
5
Cela peut-il donc fonctionner parmi les instructions SQL d'un .sqlfichier? par exemple, puis-je avoir CREATE DATABASE mydb;suivi \connect mydb?
J86
1
@Ciwan Je suis sûr que vous ne pouvez pas inclure de psqlcommandes dans un fichier de script SQL.
Kenny Evitt
183

Vous pouvez vous connecter à une base de données avec \c <database>ou \connect <database>.

meagar
la source
98

À l'invite PSQL, vous pouvez faire:

\connect (or \c) dbname
Michael Goldshteyn
la source
31

Vous pouvez sélectionner la base de données lors de la connexion avec psql. C'est pratique lorsque vous l'utilisez à partir d'un script:

sudo -u postgres psql -c "CREATE SCHEMA test AUTHORIZATION test;" test
Manel Clos
la source
4
Merci, je devenais fou ... :)
Richard
10

\lpour les bases de données \cDatabaseName pour basculer vers db \dfpour les procédures stockées dans une base de données particulière

Ambrish Rajput
la source
9

Utilisation de la méta-commande de psql \c or \connect [ dbname [ username ] [ host ] [ port ] ] | conninfo(voir documentation ).

Exemple: \c MyDatabase

Notez que la \cet \connectméta-commandes sont sensibles à la casse .

Franck Dernoncourt
la source
7

Utilisez l'instruction ci-dessous pour basculer vers différentes bases de données résidant à l'intérieur de votre RDMS postgreSQL

\c databaseName
Bilal Mahmood
la source
1

Si vous souhaitez basculer vers une base de données spécifique au démarrage, essayez

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

Par défaut, Postgres s'exécute sur le port 5432. S'il s'exécute sur un autre, assurez-vous de passer le port dans la ligne de commande.

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

Par un simple alias, nous pouvons le rendre pratique.

Créez un alias dans votre .bashrcou.bash_profile

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

Exécuter psqlen ligne de commande, il basculera vers la base de données par défaut; psql anotherdb, il basculera vers la base de données avec le nom en argument, au démarrage.

Vignesh Raja
la source
1

Bien que cela ne soit pas explicitement indiqué dans la question, le but est de se connecter à un schéma / base de données spécifique.

Une autre option consiste à se connecter directement au schéma. Exemple:

sudo -u postgres psql -d my_database_name

Source 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
la source
1

Vous pouvez également vous connecter à une base de données avec un ROLE différent comme suit.

\connect DBNAME ROLENAME;

ou

\c DBNAME ROLENAME;
Abhishek
la source
0

Vous pouvez vous connecter en utilisant

\ c nomb

Si vous souhaitez voir toutes les commandes possibles pour POSTGRESQL ou SQL, procédez comme suit:

  1. rails dbconsole (Vous serez redéfini dans votre base de données ENV actuelle)

  2. \? (Pour les commandes POSTGRESQL)

ou

  1. \ h (pour les commandes SQL)

  2. Appuyez sur Q pour quitter

Lakhani Aliraza
la source
-11

Comme mentionné dans les autres réponses, vous devez modifier la connexion pour utiliser une base de données différente.

Postgres fonctionne avec des schémas. Vous pouvez avoir plusieurs schémas dans une seule base de données. Donc, si vous travaillez dans la même base de données et que vous souhaitez modifier le schéma, vous pouvez faire:

SET SCHEMA 'schema_name';

user3545770
la source
9
C'est faux. Cela ne changera que le schéma utilisé dans le chemin de recherche. Une base de données contient plusieurs schémas ta.
Tous les travailleurs sont essentiels du
@cpburnz Je suis d'accord avec vous
MangEngkus
1
En plus du commentaire de @ cpburnz, SET SCHEMA est utilisé comme SET SCHEMA 'schema_name'non SET SCHEMA 'database_name'. C'est donc une façon SQL de changer le schéma et non la base de données. Ceci est également similaire à SET search_path TO schema_name. Voir la documentation ici ou ici .
Ibrahim Dauda