Qual è un modo conveniente per eseguire query multilinea in postgres usando ssh?


9

Supponiamo che abbia bisogno di scrivere alcune query nella console, qual è il modo più efficiente di eseguire query multilinea come le CREATE TABLEistruzioni?

Sono abituato a utilizzare Microsoft Management Studio, ma ora mi ritrovo a dover imparare PostgreSQL al volo.


Digitalo? Copia e incolla? Reindirizzare da un file?
Michael Hampton,

Sì, intendo digitarlo con le dita: P. Quello che sto ottenendo è che il #prompt di postgres appare solo inserire una riga alla volta, il che è ottimo per cose come CREATE DATABASEo ALTER USER. Come potrei formattare bene il mio testo prima di eseguire?
Chad Harrison,

Risposte:


4

In realtà non esiste una "query a più righe" - per quanto riguarda PostgreSQL, tutto ciò che gli spazi bianchi e quelle nuove righe sono privi di significato (a meno che non si verifichino all'interno di una stringa o non stiamo parlando di schede e simili in COPYun'istruzione o un pochi altri posti speciali).

La scrittura di query "sulla console" su SSH di solito viene eseguita con lo psqlstrumento, che è il terminale interattivo di Postgres (vedere la documentazione per ulteriori informazioni).

È possibile passare i file di testo contenente le query per psqlutilizzando l' -fopzione.

Puoi anche passare le query alla psqlriga di comando (citato come appropriato per la tua shell), oppure inserirle tramite STDIN (il flusso di input standard) - vedi l' -copzione.


Tubi, avrei dovuto pensare ai tubi. Imparo ancora.
Chad Harrison,

25

Quanto segue vi porterà al terminale interattivo di PostgreSQL:

$ psql <your database name>

Quindi immettere \e(o \edit) per aprire un editor ( viimpostazione predefinita):

# \e

Scrivi qualche domanda:

select now();

Infine, salva ed esci dal tuo editor (ad es. :wqIn vi) e psqleseguirà la query che hai appena scritto.

Per impostare un editor diverso, come ad esempio vimo nano, impostare una delle seguenti variabili d'ambiente: PSQL_EDITOR, EDITOR, VISUAL.

Per ulteriori informazioni, consultare https://www.postgresql.org/docs/current/app-psql.html e cercare \e.


2

È possibile scrivere la query in un file temporaneo ed eseguirla con psql -f /path/to/temp/file


0

Ovvio, ma se qualcuno non è a conoscenza, puoi scrivere istruzioni multilinea direttamente nel prompt psql:

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

Nota il ;carattere finale : qualsiasi comando SQL verrà eseguito solo dopo aver emesso questo carattere. Quindi il modo più semplice è semplicemente copiare e incollare comandi SQL multilinea con un finale ;.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.