¿Cuál es una forma conveniente de ejecutar consultas multilínea en postgres usando ssh?

9

Digamos que necesito escribir a mano algunas consultas en la consola, ¿cuál es la forma más eficiente de ejecutar consultas multilínea como CREATE TABLEdeclaraciones?

Estoy acostumbrado a usar Microsoft Management Studio, pero ahora tengo que aprender sobre PostgreSQL sobre la marcha.

Chad Harrison
fuente
Escríbelo? ¿Copiar y pegar? Redirigir desde un archivo?
Michael Hampton
Sí, me refiero a escribirlo con los dedos: P. A lo que me refiero es que el #mensaje de postgres aparece solo ingresando una línea a la vez, lo cual es ideal para cosas como CREATE DATABASEo ALTER USER. ¿Cómo podría formatear bien mi texto antes de ejecutarlo?
Chad Harrison

Respuestas:

4

Realmente no existe una "consulta multilínea": en lo que respecta a PostgreSQL, todo ese espacio en blanco y esas nuevas líneas no tienen sentido (a menos que ocurran dentro de una cadena o estamos hablando de pestañas y demás en una COPYdeclaración o un Algunos otros lugares especiales).

La escritura de consultas "en la consola" sobre SSH generalmente se realiza con la psqlherramienta, que es el terminal interactivo de Postgres (consulte los documentos para obtener más información).

Puede pasar archivos de texto que contengan consultas para psqlusar la -fopción.

También puede pasar consultas a psqlla línea de comando (citado según corresponda para su shell) o canalizarlas a través de STDIN (la secuencia de entrada estándar): consulte la -copción.

voretaq7
fuente
Tuberías, deberían haber pensado en las tuberías. Aún aprendo
Chad Harrison
25

Lo siguiente lo llevará al terminal interactivo de PostgreSQL:

$ psql <your database name>

Luego ingrese \e(o \edit) para abrir un editor ( vies el valor predeterminado):

# \e

Escribe alguna consulta:

select now();

Finalmente, guarde y salga de su editor (por ejemplo, :wqen vi), y psqlejecutará la consulta que acaba de escribir.

Para configurar un editor diferente, como por ejemplo vimo nano, set de una de las siguientes variables de entorno: PSQL_EDITOR, EDITOR, VISUAL.

Para obtener más información, consulte https://www.postgresql.org/docs/current/app-psql.html y busque \e.

TheGrimmCientífico
fuente
2

Puede escribir la consulta en un archivo temporal y ejecutarla con psql -f /path/to/temp/file

Nam G VU
fuente
0

Obvio, pero si alguien no lo sabe, puede escribir declaraciones de varias líneas directamente en el indicador de psql:

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

Tenga en cuenta el ;carácter final : cualquier comando SQL solo se ejecutará una vez que se haya emitido este carácter. Entonces, la forma más fácil es simplemente copiar y pegar comandos SQL de varias líneas con un seguimiento ;.

Alex
fuente