Ejecute consultas de PostgreSQL desde la línea de comando
Inserté datos en una tabla... Quiero ver ahora la tabla completa con filas, columnas y datos. ¿Cómo puedo mostrarlo mediante comando?
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 psql
asumirá 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. psql
le 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 psql
pero esperaba al menos ALGO, entonces olvidó el punto y coma;
SELECT * FROM my_table;
¿ Dónde my_table
está el nombre de tu mesa?
EDITAR:
psql -c "SELECT * FROM my_table"
o simplemente psql
y luego escriba sus consultas.
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"
Abra "SQL Shell (psql)" desde sus Aplicaciones (Mac).
Haga clic en Intro para ver la configuración predeterminada. Ingrese la contraseña cuando se le solicite.
*) Escriba \?
para obtener ayuda
*) Escriba \conninfo
para ver con qué usuario está conectado.
*) Escriba \l
para ver la lista de Bases de Datos.
*) Conéctese a una base de datos mediante \c <Name of DB>
, por ejemplo\c GeneDB1
Debería ver el mensaje clave cambiar a la nueva base de datos, así:
*) 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
.
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;
:
-) Ahora que tiene los esquemas, desea conocer las tablas de esos esquemas. Para eso, puedes usar el dt
comando. Por ejemplo\dt "GeneSchema1".*
*) Ahora puedes realizar tus consultas. Por ejemplo:
*) Así es como se ven la base de datos, el esquema y las tablas anteriores en pgAdmin:
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