Ejecute consultas de PostgreSQL desde la línea de comando

Resuelto Manu Lakaster asked hace 10 años • 0 respuestas

Inserté datos en una tabla... Quiero ver ahora la tabla completa con filas, columnas y datos. ¿Cómo puedo mostrarlo mediante comando?

Manu Lakaster avatar Oct 30 '13 12:10 Manu Lakaster
Aceptado

psql -U username -d mydatabase -c 'SELECT * FROM mytable'

Si es nuevo en PostgreSQL y no está familiarizado con el uso de la herramienta de línea de comandos psql, existe un comportamiento confuso que debe tener en cuenta cuando ingresa a una sesión interactiva.

Por ejemplo, inicie una sesión interactiva:

psql -U username mydatabase 
mydatabase=#

En este punto puede ingresar una consulta directamente pero debe recordar finalizar la consulta con un punto y coma.;

Por ejemplo:

mydatabase=# SELECT * FROM mytable;

Si olvida el punto y coma, cuando presione Intro no obtendrá nada en la línea de retorno porque psqlasumirá que no ha terminado de ingresar su consulta. Esto puede dar lugar a todo tipo de confusión. Por ejemplo, si vuelve a ingresar la misma consulta, lo más probable es que se genere un error de sintaxis.

Como experimento, intente escribir cualquier texto confuso que desee en el indicador de psql y luego presione Intro. psqlle proporcionará silenciosamente una nueva línea. Si ingresa un punto y coma en esa nueva línea y luego presiona Enter, recibirá el ERROR:

mydatabase=# asdfs 
mydatabase=# ;  
ERROR:  syntax error at or near "asdfs"
LINE 1: asdfs
    ^

La regla general es: si no recibió respuesta psqlpero esperaba al menos ALGO, entonces olvidó el punto y coma;

Grant avatar Feb 18 '2014 16:02 Grant
SELECT * FROM my_table;

¿ Dónde my_tableestá el nombre de tu mesa?

EDITAR:

psql -c "SELECT * FROM my_table"

o simplemente psqly luego escriba sus consultas.

Paul Draper avatar Oct 30 '2013 05:10 Paul Draper

Si su base de datos está protegida con contraseña, entonces la solución sería:

PGPASSWORD=password  psql -U username -d dbname -c "select * from my_table"
pyAddict avatar Jan 19 '2018 06:01 pyAddict

Abra "SQL Shell (psql)" desde sus Aplicaciones (Mac).

ingrese la descripción de la imagen aquí

Haga clic en Intro para ver la configuración predeterminada. Ingrese la contraseña cuando se le solicite.

ingrese la descripción de la imagen aquí

*) Escriba \?para obtener ayuda

*) Escriba \conninfopara ver con qué usuario está conectado.

*) Escriba \lpara ver la lista de Bases de Datos.

ingrese la descripción de la imagen aquí

*) Conéctese a una base de datos mediante \c <Name of DB>, por ejemplo\c GeneDB1

ingrese la descripción de la imagen aquí

Debería ver el mensaje clave cambiar a la nueva base de datos, así:ingrese la descripción de la imagen aquí

*) Ahora que está en una base de datos determinada, desea conocer los esquemas de esa base de datos. El mejor comando para hacer esto es \dn.

ingrese la descripción de la imagen aquí

Otros comandos que también funcionan (pero no tan bien) son select schema_name from information_schema.schemata;y select nspname from pg_catalog.pg_namespace;:

ingrese la descripción de la imagen aquí

-) Ahora que tiene los esquemas, desea conocer las tablas de esos esquemas. Para eso, puedes usar el dtcomando. Por ejemplo\dt "GeneSchema1".*

ingrese la descripción de la imagen aquí

*) Ahora puedes realizar tus consultas. Por ejemplo:

ingrese la descripción de la imagen aquí

*) Así es como se ven la base de datos, el esquema y las tablas anteriores en pgAdmin:

ingrese la descripción de la imagen aquí

Gene avatar Apr 16 '2019 01:04 Gene

No tengo dudas sobre la respuesta de @Grant. Pero a veces me enfrento a algunos problemas, como si el nombre de la columna es similar a cualquier palabra clave reservada de postgresql, como natural , en este caso es difícil ejecutar un SQL similar desde la línea de comando, ya que se necesitará "\natural\" en el campo Consulta. Entonces, mi enfoque es escribir el SQL en un archivo separado y ejecutar el archivo SQL desde la línea de comando. Esto también tiene otra ventaja. Si tiene que cambiar la consulta de un script grande, no necesita tocar el archivo o comando del script. Solo cambie el archivo SQL de esta manera

psql -h localhost -d database -U postgres -p 5432 -a -q -f /path/to/the/file.sql
Devil's Dream avatar Jul 14 '2019 10:07 Devil's Dream