Ejecutar consultas de PostgreSQL en PSQL

Bilal Shahid 20 junio 2023
  1. La metodología básica de uso de PSQL
  2. Ejecutar consultas por separado para cada base de datos
  3. Uso de la sintaxis SINGLE LINE en lugar de punto y coma
  4. Usar archivo para leer consultas SQL en PSQL
Ejecutar consultas de PostgreSQL en PSQL

PostgreSQL viene con dos opciones, la opción número uno es PGADMIN4 o cualquier otro número de versión que vaya a utilizar, y la segunda opción es PSQL. PSQL es la interfaz de línea de comandos que puede interactuar con nuestra sesión de PostgreSQL y ejecutar consultas desde la interfaz de usuario.

Recuerde que PSQL es un front-end basado en terminal y también puede tomar argumentos y consultas de un archivo y su línea de comandos. Así que ahora, avancemos y entendamos cómo funcionan nuestras consultas en PSQL, la línea de comando de PostgreSQL.

La metodología básica de uso de PSQL

Una vez que haya iniciado PSQL con su nombre de usuario y contraseña de Postgres e iniciado sesión correctamente, es hora de comprender cómo ejecutar las consultas que ejecutaría en la interfaz de usuario de PostgreSQL en una línea de comandos.

Asegúrese de seguir la sintaxis correctamente cuando utilice consultas con palabras clave como SELECCIONAR, INSERTAR, ACTUALIZAR, etc., para evitar errores no deseados. Mucha gente tiende a perder un punto y coma ;.

Si falta un punto y coma, PSQL pensará que la consulta aún no ha finalizado y presionar ENTER no lo garantizará. Entonces, digamos que está en su instancia de PSQL de la siguiente manera:

Interfaz de línea de comandos de PSQL

Ahora, INSERTAR una tabla en la base de datos. Queremos INSERTAR una tabla BOLSA con dos columnas, un ID y un MODELO.

Consulta:

CREATE table BAG (id INT, model TEXT);

Producción:

insertar una tabla en la base de datos

Si olvidó poner un punto y coma y presione ENTER, no obtendrá una salida en la pantalla y permanecerá en blanco.

Producción:

error al crear una tabla en la base de datos

De la misma manera, puede ejecutar una consulta INSERTAR para ingresar ahora algunos valores de la siguiente manera. Vamos a INSERTAR los conjuntos de datos, ‘(1, Adidas)’, ‘(2, Jale)’ y ‘(3, Niky)’.

Consulta:

insert into BAG values (1, 'Adidas'), (2, 'Jale'), (3, 'Niky');

Producción:

insertar conjuntos de datos

Ejecute la consulta SELECCIONAR y devuelva una TABLA.

Producción:

ver la tabla de datos en la base de datos

Ejecutar consultas con PSQL es fácil. Sin embargo, hay una condición.

Si tiende a ejecutar una consulta antes de una consulta sin la notación de punto y coma, la última consulta no funcionará en absoluto. Entonces, si llamara a SELECT BAG sin un punto y coma y luego ejecutara la operación INSERT, PSQL mostraría un error.

Producción:

se muestra un error si se ejecuta una consulta antes de una consulta sin el punto y coma

No poner un punto y coma después de SELECCIONAR nunca terminó la consulta. La siguiente consulta INSERTAR se agregó a esta consulta SELECCIONAR, y cuando se ejecuta, causaría un error.

Por lo tanto, es mejor cuidar siempre los puntos y comas al final de cada declaración.

Ejecutar consultas por separado para cada base de datos

Podemos tener más de una base de datos. Ejecutar una consulta sin enumerar o especificar la base de datos puede generar más confusión.

Avancemos y veamos primero todas nuestras bases de datos. Para ver bases de datos en PSQL, puede ejecutar una consulta a continuación.

Consulta:

\l or \l+

\l+ es una versión más descriptiva de \l, con un + añadido. Tengo mis bases de datos enumeradas a continuación.

Producción:

lista de bases de datos

En el caso de \l+, el resultado es:

Producción:

lista de bases de datos usando sin + adjunto

Actualmente disponemos de tres bases de datos, POSTGRES, TEMPLATE0 y TEMPLATE1. Además, podemos usar la declaración SELECT para verlos.

Consulta:

SELECT datname from PG_DATABASE:

Producción :

  datname
-----------
 postgres
 template1
 template0
(3 rows)

PG_DATABASE es un catálogo que almacena toda la información de la base de datos, y DATNAME es una columna dentro de esta tabla que almacena las bases de datos. Para conectarnos a la base de datos Postgres, usemos el comando \c.

Dominio:

\c postgres

A continuación, puede ejecutar la consulta para obtener las tablas como \dt.

Consulta:

\dt

Producción :

              List of relations
 Schema |      Name       | Type  |  Owner
--------+-----------------+-------+----------
 public | animal          | table | postgres
 public | bag             | table | postgres
 public | bus             | table | postgres
 public | car             | table | postgres
 public | cat             | table | postgres
 public | dog             | table | postgres
 public | horse           | table | postgres
 public | identity_number | table | postgres
 public | mytable         | table | postgres
 public | person          | table | postgres
 public | person_details  | table | postgres
 public | rider           | table | postgres
 public | strings         | table | postgres
 public | student         | table | postgres
 public | tab             | table | postgres
 public | vehicle         | table | postgres
(16 rows)

Ahora puede conectarse a la base de datos TEMPLATE0 o TEMPLATE1 para ver sus tablas, pero mostrarán un error porque no aceptan conexiones de usuarios entrantes debido a la configuración predeterminada.

Producción:

error al ver la tabla de la base de datos debido a las conexiones de configuración predeterminadas

Para ejecutar una consulta para una base de datos específica, use el comando \c para conectarse y luego la consulta.

Consulta:

psql -U postgres -d postgres -c "SELECT * from BAG;"

Después de la palabra clave -d, conéctese a la base de datos de Postgres y ejecute la consulta. Escribí el nombre de la base de datos para conectarme y luego emití el comando.

Asegúrese de no escribir la consulta después de -c entre comas simples, lo que generaría un error. Use comas dobles para que sea una cadena válida y, al final, escriba un punto y coma para estar seguro.

No usar las comillas dobles dará lugar a un error como en el siguiente ejemplo.

Consulta:

psql -U postgres -d postgres -c 'SELECT * FROM BAG;'

Producción :

psql: warning: extra command-line argument "*" ignored
psql: warning: extra command-line argument "FROM" ignored
psql: warning: extra command-line argument "BAG'" ignored

Uso de la sintaxis SINGLE LINE en lugar de punto y coma

Puede usar el comando -S o --SINGLE-LINE para finalizar automáticamente las consultas de una sola línea sin necesidad de un punto y coma. Al inicializar la sesión de PostgreSQL, ejecute los siguientes comandos.

Dominio:

psql -U postgres -S

o

psql -U postgres --single-line

Cuando ejecute su sesión de PSQL, notará algo como lo siguiente:

postgres^# __

Esto significa que postgres# cambió a postgres^#, lo que indica el uso de una declaración de LÍNEA ÚNICA.

Consulta:

select * from BAG

Si ejecuta la consulta anterior, funcionará perfectamente bien, y no se agregará punto y coma (;) al final. Si protege su base de datos con una contraseña requerida en cada sesión, puede usar la palabra clave PGPASSWORD al inicializar una sesión en PSQL.

Usar archivo para leer consultas SQL en PSQL

Otra implementación útil de la lectura de consultas SQL más grandes es usar a veces un archivo de extensión .sql con consultas SQL escritas y ejecutarlo desde la línea de comandos de PSQL. Por ejemplo, hagamos un archivo con extensión .sql con la siguiente consulta.

Consulta:

SELECT * from BAG;

Guardémoslo como QUERY1.SQL en nuestro escritorio.

hacer un archivo con extensión sql

Para ejecutar esto mientras inicializamos nuestra sesión de PSQL. Utilice el siguiente comando.

Dominio:

psql -U postgres -f "C:\Users\Bilal Shahid\Desktop\query1.sql"

Producción :

 id |  mode
----+--------
  1 | Adidas
  2 | Jale
  3 | Nikey
  1 | Adidas
  2 | Jale
  3 | Nikey
  1 | Adidas
  2 | Jale
  3 | Nikey
  4 | John
  5 | mike
(11 rows)

Hay otro equivalente para el comando -f. El comando \i, si ya está dentro de la sesión de PSQL y desea ejecutar la consulta desde el archivo.

Consulta:

postgres=# \i 'C:/Users/Bilal Shahid/Desktop/query1.sql'

Use barras diagonales inversas (/) y comas simples ('), ya que si no lo hace, obtendrá errores.

Esperamos que haya aprendido a usar PSQL de manera eficiente y haya entendido las diversas formas en que puede producir errores y cómo solucionarlos. Siempre lea nuestros tutoriales a fondo para una comprensión cuidadosa y profunda.

Bilal Shahid avatar Bilal Shahid avatar

Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!

GitHub

Artículo relacionado - PostgreSQL Query