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 TABLE
instructions?
Je suis habitué à utiliser Microsoft Management Studio, mais je dois maintenant me familiariser avec PostgreSQL à la volée.
postgresql
Chad Harrison
la source
la source
#
invite postgres n'apparaît qu'entrer une ligne à la fois, ce qui est idéal pour des choses commeCREATE DATABASE
ouALTER USER
. Comment pourrais-je bien formater mon texte avant de l'exécuter?Réponses:
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
COPY
dé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'
psql
outil, qui est le terminal interactif Postgres (voir la documentation pour plus d'informations).Vous pouvez transmettre des fichiers texte contenant des requêtes à l'
psql
aide de l'-f
option.Vous pouvez également transmettre des requêtes
psql
sur la ligne de commande (citées selon votre environnement) ou les diriger via STDIN (le flux d'entrée standard) - voir l'-c
option.la source
Les éléments suivants vous amèneront au terminal interactif de PostgreSQL:
Entrez ensuite
\e
(ou\edit
) pour ouvrir un éditeur (vi
par défaut):Écrivez une requête:
Enfin, enregistrez et quittez votre éditeur (par exemple
:wq
dansvi
), etpsql
exécutez la requête que vous venez d'écrire.Pour définir un éditeur différent, par exemple
vim
ounano
, 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
.la source
Vous pouvez écrire la requête dans un fichier temporaire et l'exécuter avec
psql -f /path/to/temp/file
la source
Évidemment, mais si quelqu'un n'est pas au courant, vous pouvez écrire des instructions sur plusieurs lignes directement dans l'invite psql:
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;
.la source