Quel est un moyen pratique d'exécuter des requêtes multilignes dans postgres en utilisant ssh?

9

Disons que j'ai besoin d'écrire à la main quelques requêtes dans la console, quelle est la manière la plus efficace d'exécuter des requêtes multilignes comme des CREATE TABLEinstructions?

Je suis habitué à utiliser Microsoft Management Studio, mais je dois maintenant me familiariser avec PostgreSQL à la volée.

Chad Harrison
la source
Tapez-le? Copier et coller? Rediriger depuis un fichier?
Michael Hampton
Oui, je veux dire le taper avec mes doigts: P. Ce que je veux dire, c'est que l' #invite postgres n'apparaît qu'entrer une ligne à la fois, ce qui est idéal pour des choses comme CREATE DATABASEou ALTER USER. Comment pourrais-je bien formater mon texte avant de l'exécuter?
Chad Harrison

Réponses:

4

Il n'y a vraiment rien de tel qu'une "requête multi-lignes" - pour autant que PostgreSQL s'en soucie, tout cet espace et ces nouvelles lignes n'ont pas de sens (à moins qu'elles ne se produisent à l'intérieur d'une chaîne ou que nous parlions d'onglets & tels dans une COPYdéclaration ou un quelques autres endroits spéciaux).

L'écriture de requêtes "sur la console" via SSH se fait généralement avec l' psqloutil, qui est le terminal interactif Postgres (voir la documentation pour plus d'informations).

Vous pouvez transmettre des fichiers texte contenant des requêtes à l' psqlaide de l' -foption.

Vous pouvez également transmettre des requêtes psqlsur la ligne de commande (citées selon votre environnement) ou les diriger via STDIN (le flux d'entrée standard) - voir l' -coption.

voretaq7
la source
Les tuyaux, auraient dû penser aux tuyaux. J'apprends encore.
Chad Harrison
25

Les éléments suivants vous amèneront au terminal interactif de PostgreSQL:

$ psql <your database name>

Entrez ensuite \e(ou \edit) pour ouvrir un éditeur ( vipar défaut):

# \e

Écrivez une requête:

select now();

Enfin, enregistrez et quittez votre éditeur (par exemple :wqdans vi), et psqlexécutez la requête que vous venez d'écrire.

Pour définir un éditeur différent, par exemple vimou nano, ensemble l' une des variables d'environnement suivantes: PSQL_EDITOR, EDITOR, VISUAL.

Pour plus d'informations, consultez https://www.postgresql.org/docs/current/app-psql.html et recherchez \e.

TheGrimmScientist
la source
2

Vous pouvez écrire la requête dans un fichier temporaire et l'exécuter avec psql -f /path/to/temp/file

Nam G VU
la source
0

Évidemment, mais si quelqu'un n'est pas au courant, vous pouvez écrire des instructions sur plusieurs lignes directement dans l'invite psql:

psql -h localhost -p 5432 -U postgres public
public=# SELECT
public=# *
public=# FROM
public=# mytable
public=# LIMIT 1;

Notez le ;caractère de fin - toute commande SQL ne sera exécutée qu'une fois ce caractère émis. Donc, le moyen le plus simple est de simplement copier et coller des commandes SQL multi-lignes avec une fin ;.

Alex
la source