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 TABLE
declaraciones?
Estoy acostumbrado a usar Microsoft Management Studio, pero ahora tengo que aprender sobre PostgreSQL sobre la marcha.
postgresql
Chad Harrison
fuente
fuente
#
mensaje de postgres aparece solo ingresando una línea a la vez, lo cual es ideal para cosas comoCREATE DATABASE
oALTER USER
. ¿Cómo podría formatear bien mi texto antes de ejecutarlo?Respuestas:
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
COPY
declaración o un Algunos otros lugares especiales).La escritura de consultas "en la consola" sobre SSH generalmente se realiza con la
psql
herramienta, 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
psql
usar la-f
opción.También puede pasar consultas a
psql
la 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-c
opción.fuente
Lo siguiente lo llevará al terminal interactivo de PostgreSQL:
Luego ingrese
\e
(o\edit
) para abrir un editor (vi
es el valor predeterminado):Escribe alguna consulta:
Finalmente, guarde y salga de su editor (por ejemplo,
:wq
envi
), ypsql
ejecutará la consulta que acaba de escribir.Para configurar un editor diferente, como por ejemplo
vim
onano
, 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
.fuente
Puede escribir la consulta en un archivo temporal y ejecutarla con
psql -f /path/to/temp/file
fuente
Obvio, pero si alguien no lo sabe, puede escribir declaraciones de varias líneas directamente en el indicador de psql:
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;
.fuente