Ejecute consultas PostgreSQL desde la línea de comando

279

Inserté datos en una tabla ... Quiero ver ahora toda la tabla con filas, columnas y datos. ¿Cómo puedo mostrarlo a través del comando?

Manu Lakaster
fuente

Respuestas:

476

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

Si eres nuevo en postgresql y no estás familiarizado con el uso de la herramienta de línea de comandos psql entonces hay un comportamiento confuso que debes tener en cuenta cuando entras en 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 terminar la consulta con un punto y coma.;

Por ejemplo:

mydatabase=# SELECT * FROM mytable;

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

Como experimento, intente escribir cualquier elemento que desee en el indicador de psql y luego presione Intro. psqlsilenciosamente le proporcionará 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 de psqlpero esperaba al menos ALGO, entonces olvidó el punto y coma;

Conceder
fuente
44
Dado que al menos 7.2 (eso es lo más atrás que me molesté en verificar, podría ser incluso antes), psql ha tenido la opción --single-line(o -s) que hace que cada comando sea inmediato sin necesidad de agregar un punto y coma.
Gordon
3
Pasé una hora depurando y el problema era el punto y coma que faltaba. GRACIAS
Dawson B
106
SELECT * FROM my_table;

donde my_tableesta el nombre de tu mesa

EDITAR:

psql -c "SELECT * FROM my_table"

o simplemente psqly luego escriba sus consultas.

Paul Draper
fuente
77
psql -U username -c your_database "SELECT * FROM my_table"
DrColossos
3
como se dijo, debe finalizar su comando con punto y coma ; Si está en un sistema Windows, vea notws para los usuarios de Windows básicamente, solo colóquelocmd.exe /c chcp 1252 después de haber abierto el indicador de la consola.
D_Guidi
2
para futuros usuarios, asegúrese de agregar -d antes del nombre de su base de datos y -c antes de la consulta: psql -U nombre de usuario -d mydatabase -c 'SELECCIONAR * DE mytable'
jmhead
2
no funcionó para mí. Lo hicepsql: FATAL: database "SELECT * FROM tb_name" does not exist
Jaswinder
Como indicó @DrColossos, parece que las comillas dobles alrededor del comando son necesarias al menos en los entornos cli / batch de Windows.
jewbix.cube
43

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

PGPASSWORD=password  psql -U username -d dbname -c "select * from my_table"
pyAddict
fuente
3
Nunca se sabe puede proporcionar contraseña de esta manera. Es realmente útil al hacer la prueba. Gracias
zhihong
21

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

ingrese la descripción de la imagen aquí

Haga clic en Intro para 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 a 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 \c <Name of DB>, por ejemplo\c GeneDB1

ingrese la descripción de la imagen aquí

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

*) Ahora que está en una base de datos dada, desea conocer los esquemas para 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 buenos) 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 en esos esquemas. Para eso, puedes usar el dtcomando. Por ejemplo\dt "GeneSchema1".*

ingrese la descripción de la imagen aquí

*) Ahora puedes hacer tus consultas. Por ejemplo:

ingrese la descripción de la imagen aquí

*) Así es como se ve el DB, el esquema y las tablas anteriores en pgAdmin:

ingrese la descripción de la imagen aquí

Gene
fuente
3
  1. Abra un símbolo del sistema y vaya al directorio donde instaló Postgres. En mi caso, mi ruta de Postgres es "D: \ TOOLS \ Postgresql-9.4.1-3". Después de eso, me muevo al directorio bin de Postgres.So el símbolo del sistema se muestra como "D: \ TOOLS \ Postgresql-9.4.1-3 \ bin> "
  2. Ahora mi objetivo es seleccionar "UserName" de la tabla de usuarios usando el valor "UserId". Por lo tanto, la consulta de la base de datos es " Select u." UserName "de users u Where u." UserId "= 1 ".

La misma consulta se escribe a continuación para el símbolo del sistema psql de postgres.

D: \ TOOLS \ Postgresql-9.4.1-3 \ bin> psql -U postgres -d DatabaseName -h localhost - t -c "Seleccione u. \" UserName \ "de los usuarios u Donde u. \" UserId \ "= 1;

KPatel
fuente
3

No tengo dudas sobre la respuesta de @Grant. Pero a veces enfrento 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 comandos, 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 comandos. Esto también tiene otra ventaja. Si tiene que cambiar la consulta para un script grande, no necesita tocar el archivo de script o el comando. 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
Sueño del diablo
fuente
3

También noté que la consulta

SELECCIONAR * DESDE nombre de tabla;

da un error en el símbolo del sistema psql y

SELECCIONAR * DESDE "nombre de tabla";

funciona bien, realmente extraño, así que no olvides las comillas dobles. Siempre me gustaron las bases de datos :-(

Ben
fuente
-8

Para un tipo particular de declaraciones puede encontrar más apropiado para usar Azure Data Studio , para todo lo demás viene con línea de comando incorporada. Usando el estudio puede encontrar declaraciones de mecanografía y leer la salida más cómoda.

Siga los pasos a continuación:

  1. Instalar Azure Data Studio : es un editor moderno multiplataforma centrado en el desarrollo de datos; es de código abierto y extensible, dos cosas en las que se basa PostgreSQL;
  2. Instale la extensión PostgreSQL
  3. Conéctese a su servidor local o remoto:

    ingrese la descripción de la imagen aquí

  4. Concéntrese en escribir y ejecutar solo SQL:

    ingrese la descripción de la imagen aquí

Hay muchas características interesantes como guardar conexiones, crear grupos de servidores e incluso terminales integrados si se siente más cómodo haciendo alguna tarea a través de psql.

gotqn
fuente