Commande "use database_name" dans PostgreSQL

367

Je suis débutant sur PostgreSQL.

Je veux me connecter à une autre base de données à partir de l'éditeur de requêtes de Postgres - comme la USEcommande de MySQL ou MS SQL Server.

J'ai trouvé \c databasenameen cherchant sur Internet, mais il ne fonctionne que sur psql . Lorsque je l'essaie depuis l'éditeur de requêtes PostgreSQL, j'obtiens une erreur de syntaxe.

Je dois changer la base de données par pgscripting. Est-ce que quelqu'un sait comment le faire?

sam
la source
Duplication possible de Comment changer de base de données dans psql?
AlikElzin-kilaka
Une autre option consiste à se connecter directement au schéma. Exemple: sudo -u postgres psql -d my_database_name. Source
AlikElzin-kilaka

Réponses:

383

Lorsque vous obtenez une connexion, PostgreSQLc'est toujours vers une base de données particulière. Pour accéder à une autre base de données, vous devez obtenir une nouvelle connexion.

L'utilisation \cde psql ferme l'ancienne connexion et en acquiert une nouvelle en utilisant la base de données et / ou les informations d'identification spécifiées. Vous obtenez un tout nouveau processus back-end et tout.

kgrittn
la source
Merci kgrittn pour vos précieux conseils. Pouvez-vous me dire comment je peux établir une nouvelle connexion à la base de données et fermer la précédente en utilisant la requête pgscript?
sam
Je ne connais pas pgscript. Si c'est une langue dans laquelle vous écrivez des fonctions, la réponse est que cela ne peut pas être fait. Vous devriez peut-être envisager de placer des tables dans différents schémas au lieu de différentes bases de données ?
kgrittn
2
Une requête ne peut pas changer la base de données dans PostgreSQL.
kgrittn
Merci kgrittn pour toute votre aide .. :)
sam
8
Si je ne me trompe pas, les bases de données dans MySQL sont plus proches des schémas dans PostgreSQL - vous pouvez basculer entre ceux-ci, mais les bases de données dans PostgreSQL sont un jeu de balle complètement différent.
mpen
213

Vous devez spécifier la base de données à utiliser lors de la connexion; si vous souhaitez utiliser psql pour votre script, vous pouvez utiliser "\ c nom_database"

user_name=# CREATE DATABASE testdatabase; 
user_name=# \c testdatabase 

À ce stade, vous pouvez voir la sortie suivante

You are now connected to database "testdatabase" as user "user_name".
testdatabase=#

Remarquez comment l'invite change. À la vôtre, je viens de bousculer la recherche de cela aussi, trop peu d'informations sur postgreSQL par rapport à MySQL et le reste à mon avis.

Eugène
la source
25

Dans pgAdmin, vous pouvez également utiliser

SET search_path TO your_db_name;

Bart De Boeck
la source
Cela a fonctionné grâce
YouAreAwesome
9

Le problème de base lors de la migration de MySQL que j'ai rencontré était, je pensais que le terme databaseétait le même dans PostgreSQL aussi, mais ce n'est pas le cas. Donc, si nous allons changer la base de données de notre application oupgAdmin , le résultat ne serait pas comme prévu. Comme dans mon cas, nous avons des schémas distincts (en tenant compte de la terminologie PostgreSQL ici.) Pour chaque client et un schéma d'administration distinct. Donc, dans l'application, je dois basculer entre les schémas.

Pour cela, nous pouvons utiliser la SET search_pathcommande. Cela fait basculer le schéma actuel vers le nom de schéma spécifié pour la session en cours.

exemple:

SET search_path = different_schema_name;

Cela modifie le schéma_current en le schéma spécifié pour la session. Pour le changer définitivement, nous devons apporter des modifications au postgresql.conffichier.

VPK
la source
4

Utilisez cette virgule lors de la première connexion à psql

=# psql <databaseName> <usernamePostgresql>
Sukma Saputra
la source