www.mamboteam.com
www.elsotanillo.net Advertisement
Home arrow Linux arrow Scripts Bash arrow Linux - Acceso a una BBDD mysql desde Bash
sábado, 11 de octubre de 2008
 
 
Web translation / Traduction web

british flagHi, I am translating some of the articles from Spanish to English. If you are interested in one particular article, drop me a line. Maybe you can help me. :)

Salut, je suis en train de traduire des articles d' Espagnol a Français, si tu veux un article, ecri moi. Peut-être tu peux m' aider. :)

Linux - Acceso a una BBDD mysql desde Bash PDF Imprimir E-Mail
Calificación del usuario: / 3
MaloBueno 
escrito por Juan Sierra Pons   
lunes, 22 de mayo de 2006
Compartelo:
Delicious
Meneame
Mister.Wong

Muchas veces necesitamos sacar algun dato o incluso modificar algun dato de una base de datos BBDD mysql desde nuestra consola.

Dividiremos el Script en 2 partes:

  1. Definicion de los parametros para la conexion a la BBDD mysql.
  2. Conexion y operacion a realizar sobre la BBDD: SELECT /UPDATE/DELETE, etc propiamente dicho.
ScriptConectaMysqlDesdeBash.sh
  1. #!/bin/sh
  2. ####Definimos lor parametros de conexion a la BBDD mysql
  3. SQL_HOST=localhost
  4. SQL_USER="usuario"
  5. SQL_PASSWORD="password"
  6. SQL_DATABASE="basededatos"
  7. ####Montamos los parametros de conexión.
  8. SQL_ARGS="-h $SQL_HOST -u $SQL_USER -D $SQL_DATABASE -s -e"
  9. #### Montamos la sentencia SQL y la lanzamos
  10. mysql $SQL_ARGS "SELECT CURDATE();"
 

Habra que modificar las variables del script segun tengamos configurado la BBDD a la que queramos conectarnos.

Si lanzamos el script, este nos devolvera la siguiente salida:

elsotanillo:~/# ./ScriptConectaMysqlDesdeBash.sh
CURDATE()
2006-05-22

Comentarios
Añadir nuevoBuscarRSS
Luis - Tu script...   | 189.187.30.xxx | 2008-05-02 16:19:54
Juan,
Gracias por el Script, me ha sido de gran ayuda, no sabes cuanto estuve batallando.
Saludos.
luis - Ejecutar varias sentencias con   | 189.187.30.xxx | 2008-05-02 17:02:29
El Script hace una conexion, ejecuta la sentencia y se desconeta.
Pero si quiero mantener la conexion abierta para lanzar unas 3 sentencias SQL?

Gracias
Juan   | 87.219.131.xxx | 2008-05-02 17:37:04
Simplemente escribelas una detras de otra ya que estas se ejecutan secuencialmente.


Si tienes alguna duda me avisas.

Salu2
Luis - ejecucion secuencial   | 189.187.30.xxx | 2008-05-05 15:17:37
cierto, funciono a la perfeccion.
La respuesta me la manda a la salida standar claro esta, pero ne me deja mandar la respuesta a archivo, utilizo los ">" pero nada, dentro del script claro.
Alguna idea?
Luis - archivo .sql como parametro   | 189.187.30.xxx | 2008-05-05 17:40:28
Algo estoy haciendo mal porque quiero darle al Script como parametro una sentencia SQL pero en su archivo original, es decir .sql pero no lo agarra.
Son varias sentencias que tengo por separado y necesito que cada una se corra diario y me deje un TXT como respuesta.
Juan - RE: archivo .sql como parametr     | 87.219.131.xxx | 2008-05-11 16:14:01
Hola,

No tengo muy claro que es lo que quieres hacer.
Luis - Te posteo u explico   | 189.187.36.xxx | 2008-05-23 11:37:46
Ahi va el Script
$ cat ScriptConectaMysqlDe
sdeBash.sh
#!/bin/sh
SQL_HOST=localhost
SQL_USER="luis"
SQL_PASSWORD="Bfg03M90"
SQL_DATABASE="gesban"

SQL_ARGS="-h $SQL_HOST -u $SQL_USER -D $SQL_DATABASE -s -e"

mysql $SQL_ARGS "SELECT TCuenta.id_remesa, TCuenta.no_cuenta, TCuenta.gestor_asig, TRemesa.f_vence FROM TCuenta INNER JOIN TRemesa ON (TCuenta.id_remesa = TRemesa.id_remesa) WHERE (TCuenta.no_cuenta = $1) AND (TRemesa.f_vence > CURDATE());"

Hasta aqui.
Esta consulta y otras 5 mas las necesito ejecutar diario y que cada consulta me de el resultado en un archivo TXT.
Lo que ya tengo pensado hacer:
- con el CRON puedo hacer que los Scripst corran a determinada hora
- Ahorita los Scripts me dan el resultado deseado en la lasilda Standar PERO necesito que me lo mande a un archivo TXT y aparte que el nombre del archivo sea asi "remesa20080523.txt". La parte que dice "remesa" que siempre salga asi, pero la parte de...
Luis - Te posteo u explico   | 189.187.36.xxx | 2008-05-23 11:38:39
Ahi va el Script
-$ cat ScriptConectaMysqlDe
sdeBash.sh
-#!/bin/sh
-SQL_HOST=localhost
-SQL_USER="luis"
-SQL_PASSWORD="Bfg03M90"
-SQL_DATABASE="gesban"
-
-SQL_ARGS="-h $SQL_HOST -u $SQL_USER -D -$SQL_DATABASE -s -e"
-
-mysql $SQL_ARGS "SELECT TCuenta.id_remesa, TCuenta.no_cuenta, TCuenta.gestor_asig, TRemesa.f_vence FROM TCuenta INNER JOIN TRemesa ON (TCuenta.id_remesa = TRemesa.id_remesa) WHERE (TCuenta.no_cuenta = $1) AND (TRemesa.f_vence > CURDATE());"
-
Hasta aqui.
Esta consulta y otras 5 mas las necesito ejecutar diario y que cada consulta me de el resultado en un archivo TXT.
Lo que ya tengo pensado hacer:
- con el CRON puedo hacer que los Scripst corran a determinada hora
- Ahorita los Scripts me dan el resultado deseado en la lasilda Standar PERO necesito que me lo mande a un archivo TXT y aparte que el nombre del archivo sea asi "remesa20080523.txt". La parte que dice "remesa" que siempre salga asi, pero...
Luis - Te posteo u explico   | 189.187.36.xxx | 2008-05-23 11:41:38
Ahi va el Script

SQL_HOST=localhost
SQL_USER="luis"
SQL_PASSWORD="Bfg03M90"
SQL_DATABASE="gesban"

SQL_ARGS="-h $SQL_HOST -u $SQL_USER -D -$SQL_DATABASE -s -e"

mysql $SQL_ARGS "SELECT TCuenta.id_remesa, TCuenta.no_cuenta, TCuenta.gestor_asig, TRemesa.f_vence FROM TCuenta INNER JOIN TRemesa ON (TCuenta.id_remesa = TRemesa.id_remesa) WHERE (TCuenta.no_cuenta = $1) AND (TRemesa.f_vence > CURDATE());"

Hasta aqui.

Esta consulta y otras 5 mas las necesito ejecutar diario y que cada consulta me de el resultado en un archivo TXT.
Lo que ya tengo pensado hacer:
- con el CRON puedo hacer que los Scripst corran a determinada hora
- Ahorita los Scripts me dan el resultado deseado en la salida Standar PERO necesito que me lo mande a un archivo TXT y aparte que el nombre del archivo sea por ejemplo asi "remesa20080523.txt".
La parte que dice "remesa" no debe cambiar, pero la parte de la fecha esa si necesito que cambie cad...
Luis - Te posteo u explico   | 189.187.36.xxx | 2008-05-23 11:41:58
Ahi va el Script

SQL_HOST=localhost
SQL_USER="luis"
SQL_PASSWORD="Bfg03M90"
SQL_DATABASE="gesban"

SQL_ARGS="-h $SQL_HOST -u $SQL_USER -D -$SQL_DATABASE -s -e"

mysql $SQL_ARGS "SELECT TCuenta.id_remesa, TCuenta.no_cuenta, TCuenta.gestor_asig, TRemesa.f_vence FROM TCuenta INNER JOIN TRemesa ON (TCuenta.id_remesa = TRemesa.id_remesa) WHERE (TCuenta.no_cuenta = $1) AND (TRemesa.f_vence > CURDATE());"

Hasta aqui.
Luis - Me marca error al postearte el   | 189.187.36.xxx | 2008-05-23 11:49:07
Juan,
No te pude postear el scritp pero es basicamente el que pusiste.
La idea es correr 5 Querys diferentes y que cada uno me genere un archivo TXT y que el nombre del archivo sea la fecha en que se genero, algo asi: "remesa20080516.txt"
Los Querys ya los tengo y jalan bien, el resultado lo veo el pantalla.
Me falta que me genere el resultado en TXT. Me puedes orientar al respecto?
Saludos
Juan - re: Me marca error al posteart     | 87.219.131.xxx | 2008-05-25 13:48:04
Luis escribió:
Juan,
No te pude postear el scritp pero es basicamente el que pusiste.
La idea es correr 5 Querys diferentes y que cada uno me genere un archivo TXT y que el nombre del archivo sea la fecha en que se genero, algo asi: "remesa20080516.txt"
Los Querys ya los tengo y jalan bien, el resultado lo veo el pantalla.
Me falta que me genere el resultado en TXT. Me puedes orientar al respecto?
Saludos


Hola,
Tan solo tendrias que redirigir la salida del comando mysql a un fichero.
Por ejemplo:
mysql $SQL_ARGS "SELECT CURDATE();" >Salida.txt.

Espero que te ayude.

Salu2
Luis - Corrio a la perfeccion   | 189.166.37.xxx | 2008-05-31 08:16:31
Nos acercamos a la perfeccion, dijo un profeta.
Y asi lo creo porque solo con el apoyo de los mas sabios y cultos nos quitamos un poco la ignorancia.
Solo me falta que la salida me la de separado por comas, dejame lo investigo.

Gracias. Que tengas buen dia.
Escribir comentario
Nombre:
Email:
 
Website:
Título:
Código UBB:
[b] [i] [u] [url] [quote] [code] [img] 
 
 
 
Security Image
Por favor introduce el código anti-spam que puedes leer en la imagen.

Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved.

Modificado el ( martes, 01 de enero de 2008 )
 
< Anterior   Siguiente >
Frase celebre del día
Visitas
Imagenes
Linux Howtos
Noticias de Alicante
 
Visto en Barrapunto
Barrapunto
Sindícate
 
Top! Top!