12
votes

Comment indiquer la commande PostgreSQL dans quelle base de données pour exécuter un script? (Semblable à la commande SQL Server "Utiliser")

J'ai le problème suivant, j'ai besoin de mettre dans un script qui va fonctionner avant que la nouvelle version ne soit lancée le code SQL qui permet au PGAgent dans PostgreSQL. Toutefois, ce code devrait être exécuté sur la base de données de maintenance (Postgres) et la base de données où nous exécutons le fichier de script est un autre.

Je me souviens que dans SQL Server, il existe une commande "utilisation" afin que vous puissiez faire quelque chose comme: P>

use foo

-- some code

use bar 

-- more code


1 commentaires

5 Réponses :


3
votes

Vous pouvez utiliser ces commandes via la commande psql ? Si oui, \ c Databasename est ce que vous voulez.

Documentation PSQL


5 commentaires

En réalité, l'entrée est un fichier texte traité par la base de données


Comment c'est "traité par la base de données"? Vous devez utiliser Quelques Postgres Client pour vous connecter. Lequel?


C'est un client qui exécute le fichier texte et il se connecte à la base de données via le pilote ODBC. Pour faciliter l'imagination, je suis sur le client PGADMIN et je souhaite exécuter un script qui fera une mise à jour dans deux bases de données différentes.


Jdbc ne reconnaît pas \ c afin que je dois me connecter à une URL jdbc spécifique que je souhaite connecter. Et exécuter le fichier SQL.


Si vous utilisez JDBC, vous n'utilisez pas PSQL. \ C n'est pas SQL - c'est une commande PSQL. Les connexions de la base de données Postgres ne peuvent pas être activées dans une autre base de données à la volée.



3
votes

Vous ne pouvez pas changer de base de données à Postgres de cette manière. Vous devez réellement vous reconnecter à l'autre base de données.


2 commentaires

Et existe-t-il un moyen de le faire à partir du script ou dois-je le faire de l'application qui se connecte à la base de données?


De l'application. Si vous avez terminé avec la première connexion de DB, déposez-le, sinon vous devrez effectuer deux connexions. J'avais demandé aux développeurs de PG la même question de retourner. Je ne me souviens pas de leurs raisons de le faire. Mais ils ont dit que même si PGADMIN et PSQL semblent simplement changer de base de données, ils établissent vraiment une nouvelle connexion.



0
votes

postgreSQL n'a pas la commande d'utilisation. Vous utiliseriez probablement PSQL avec l'option --DBName pour accomplir cela, --DBname prend le nom de la base de données en tant que paramètre. Voir ce lien pour plus de détails sur les autres options que vous pouvez transmettre, vous souhaitez également consulter l'option --File également. http://www.postgresql.org/docs/9.0/interactivef/app -psql.html


0 commentaires

1
votes

Bien après avoir regardé sur le Web pendant un certain temps, j'ai trouvé ce qui était ce dont j'en ai besoin http: / /www.postgresonline.com/journal/archives/44-utilisation-dblink-a-access-other-postgresql-Databases-and-servers.html


0 commentaires

8
votes

Vous pouvez mettre dans votre fichier quelque chose comme: xxx


0 commentaires