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.