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?



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.


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.



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.


4

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

=# psql <databaseName> <usernamePostgresql>
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.