Cómo automatizar consultas SQL existentes utilizando scripts bash sin acceder al prompt interactivo de MySQL (2023)

En este artículo, exploraremos diferentes formas de ejecutar consultas SQL utilizando scripts bash o la línea de comandos. Utilizaremos la base de datos MySQL como ejemplo. Antes de comenzar, asegúrese de tener instalado un cliente y servidor MySQL en su máquina.

Ejecutar una consulta SQL desde la línea de comandos de Linux

Para ejecutar una consulta SQL desde la línea de comandos de Linux, puede utilizar el siguiente comando:

mysql -u NOMBRE_USUARIO -pCONTRASEÑA -h nombre_host -D base_de_datos -e "<CONSULTA_SQL>"

A continuación, se muestra una tabla que muestra las diferentes opciones que podemos utilizar al ejecutar consultas:

Opción Descripción
--user, -u Nombre de usuario de MySQL utilizado para conectarse al servidor de la base de datos.
--password, -p Contraseña utilizada para conectarse a la base de datos.
--database, -D Nombre de la base de datos a la que se desea conectar.
--host, -h Nombre del host donde está instalada la base de datos.
--skip-column-names, -N Evita que los nombres de las columnas se muestren en los resultados.
--batch, -B Imprime los resultados utilizando una tabulación como separador de columnas, con cada fila en una nueva línea.

A continuación, se muestra un ejemplo de cómo mostrar todas las tablas de la base de datos "customer":

mysql -u root -padmin -e "USE customer; SHOW TABLES"

Nota: Al pasar la contraseña a través de la línea de comandos, no debe haber un espacio entre la contraseña y el parámetro "-p". Tenga en cuenta que este ejemplo es solo para fines de demostración y no se recomienda en un entorno de producción.

Ejecutar una consulta SQL en un host específico

Si desea ejecutar una consulta SQL en un host específico, puede utilizar la opción "-h" seguida del nombre del host. A continuación, se muestra un ejemplo de cómo conectarse al host "localhost" y ejecutar una consulta en la base de datos "world":

mysql -u retail_dba -phadoop -h localhost -e "USE world; SELECT * FROM CITY LIMIT 20"

Ejecutar una consulta SQL en una base de datos específica

Si desea ejecutar una consulta SQL en una base de datos específica, puede utilizar la opción "-D" seguida del nombre de la base de datos. A continuación, se muestra un ejemplo de cómo ejecutar una consulta en la base de datos "employees":

mysql -u root -padmin -D employees -h localhost -e "SELECT * FROM dept_emp LIMIT 20"

Suprimir los encabezados de columna

Si desea suprimir los encabezados de columna en los resultados de la consulta, puede utilizar la opción "-N". A continuación, se muestra un ejemplo de cómo suprimir los encabezados de columna:

mysql -u root -padmin -N -e "SELECT * FROM departments LIMIT 20"

Guardar los resultados en un archivo

Si desea guardar los resultados de una consulta en un archivo, puede redirigir la salida utilizando el símbolo ">" seguido del nombre del archivo. A continuación, se muestra un ejemplo de cómo guardar los resultados de una consulta en el archivo "result.txt":

mysql -u root -padmin -e "SELECT * FROM departments LIMIT 200" > result.txt

Ejecutar consultas SQL desde un script bash

Si desea ejecutar consultas SQL desde un script bash, puede crear un script con el siguiente contenido:

#!/bin/bash
mysql -u root -padmin -e "USE employees; SELECT * FROM departments LIMIT 200;"

Asegúrese de dar los permisos adecuados al script y luego ejecútelo. A continuación, se muestra un ejemplo de cómo ejecutar un script bash que ejecuta una consulta SQL:

chmod a+x script_sql.sh
./script_sql.sh

Ejecutar múltiples consultas SQL utilizando un script bash

Si desea ejecutar múltiples consultas SQL utilizando un script bash, puede utilizar la construcción "<<EOF...EOF". A continuación, se muestra un ejemplo de cómo ejecutar múltiples consultas SQL utilizando un script bash:

#!/bin/bash
mysql -u root -padmin <<EOF
SELECT * FROM departments LIMIT 200;
SELECT COUNT(*) FROM employees;
EOF

Pasar variables a una consulta SQL desde un script bash

Si desea pasar variables a una consulta SQL desde un script bash, puede utilizar la siguiente sintaxis:

#!/bin/bash
DATABASE_NAME="employees"
TABLE_NAME="employees"
mysql -u root -padmin <<SQL_QUERY
USE $DATABASE_NAME;
SELECT * FROM departments LIMIT 200;
SELECT COUNT(*) FROM $TABLE_NAME;
SQL_QUERY

En el ejemplo anterior, se pasan las variables "DATABASE_NAME" y "TABLE_NAME" a la consulta SQL.

Ejecutar un archivo .sql

Si desea ejecutar un archivo .sql a través de la línea de comandos o un script bash, puede utilizar la siguiente sintaxis:

mysql -u <nombre_usuario> -p<contraseña> -h <nombre_host> < <ubicación_archivo_sql>

A continuación, se muestra un ejemplo de cómo ejecutar un archivo .sql:

mysql -u root -padmin < /home/usuario/tutorials/rdbms/sample_script.sql

En resumen, en este artículo hemos explorado diferentes formas de ejecutar consultas SQL utilizando scripts bash o la línea de comandos. Hemos cubierto cómo ejecutar consultas en un host específico, en una base de datos específica, cómo suprimir los encabezados de columna, cómo guardar los resultados en un archivo, cómo ejecutar consultas desde un script bash y cómo ejecutar múltiples consultas utilizando un script bash. Esperamos que esta información sea útil para automatizar consultas SQL en su trabajo como desarrollador.

Top Articles
Latest Posts
Article information

Author: Saturnina Altenwerth DVM

Last Updated: 07/12/2023

Views: 5844

Rating: 4.3 / 5 (44 voted)

Reviews: 91% of readers found this page helpful

Author information

Name: Saturnina Altenwerth DVM

Birthday: 1992-08-21

Address: Apt. 237 662 Haag Mills, East Verenaport, MO 57071-5493

Phone: +331850833384

Job: District Real-Estate Architect

Hobby: Skateboarding, Taxidermy, Air sports, Painting, Knife making, Letterboxing, Inline skating

Introduction: My name is Saturnina Altenwerth DVM, I am a witty, perfect, combative, beautiful, determined, fancy, determined person who loves writing and wants to share my knowledge and understanding with you.