Shell Script y MySql

Iniciado por dark_fidodido, 28 Octubre 2009, 12:39 PM

0 Miembros y 1 Visitante están viendo este tema.

dark_fidodido

Bueno un paso mas despues de familiarizarme con Shell Script
Cuales son los comandos de MySql para utilizarlos en un Scrpt no he encontrado nada, solo para php y a mi me interesa tratar las tablas y los campos desde un script de shell...

Si me pasarais algun manual o algunos ejemplos me vendrian genial

Gracias!!!

^Tifa^

Si manejas un poco la creacion de Scripts en bash, y conoces un poco el funcionamiento del lenguaje SQL (precisamente MySQL) no es tan complicado. Por ejemplo, te hice un ejemplillo personal;

Código (java) [Seleccionar]


#!/bin/bash -x

MYSQL="mysql -u $1 -p$2"
menu="\n********Menu*********\n1 - Ver Tablas\n2 - Ver datos Tablas\n3 - Insertar datos\n4 - Salir\n"

if [ -z $1 ] || [ -z $2 ]; then
  echo Para ejecutarme coloca ./programa.sh  usuario  contrasena
exit 0;
fi

while [ "$opcion" != "4" ]; do

echo -e $menu
read opcion

case $opcion in
1)
$MYSQL << END
      use primaria;
      show tables;
END
sleep 02
;;
2)

  printf "Inserta nombre de la tabla :: "
  read tablas

$MYSQL << END
      use primaria;
      select * from $tablas;
END
sleep 02
;;
3)
 
    printf "Inserta nombre de la tabla :: "
    read tablas
    echo Inserta valores a incluir en la tabla ::
    read valores

$MYSQL << END
      use primaria;
      insert into $tablas values($valores);
END
sleep 02
;;
4)
exit $?
;;
esac

done

exit 0;



dark_fidodido

#2
mmmmm
algo asi ya intenté pero a mi solo me salia en el scrip el panes de control de mysql, no introducia las lineas de codigo, sólo cuando salía de mysql y claro me daba error por que la sintaxis no era correcta ^^
creo k para eso necesito algo de unos módulos DBI no?

gracias compañero

He probado el script, y me ha alegrado ver que funciona, lo malo es que me pide contraseña continuamente, lo he tenido que modificar un poco y claro yo necesito que funcione en background
Lo de la contraseña siempre me ha pasado me da un error cuando se la pongo en linea de comandos y solo puedo acceder a traves del comando # mysql -r -p
^^

^Tifa^

Citaralgo asi ya intenté pero a mi solo me salia en el scrip el panes de control de mysql, no introducia las lineas de codigo, sólo cuando salía de mysql y claro me daba error por que la sintaxis no era correcta ^^
creo k para eso necesito algo de unos módulos DBI no?

No. Revisa bien la sintaxis que aplicaste para dicho Shell Script para verificar porque te fallo, ya que el modulo DBI es aplicable exclusivamente para Perl conectarse a distintas base de datos relacionales  ;)  y hasta el momento estas comentando que quieres conectarte a traves de Bash no de Perl, para tu caso basta con procesar comandos de MySQL y realizar consultas como el ejemplo que te di... para tu caso (Bash+Mysql) no requieres ningun modulo o Api de MySQL.

CitarHe probado el script, y me ha alegrado ver que funciona, lo malo es que me pide contraseña continuamente, lo he tenido que modificar un poco y claro yo necesito que funcione en background

Precisamente los parametros $1 $2  hacen referencia en este caso a lo que insertes en linea de comando 'usuario' y 'contrasena' si quieres puedes ponerlo automatico, declarando una variable:

MYSQL="mysql -u  usuario  -pcontrasena'

Y ya esto te funcionara sin necesidad de ingresar usuario y contrasena.

$MYSQL << END
      use primaria;
      show tables;
END



dark_fidodido

#4
ok, tienes razon a la hora de conecta con mysql de la forma:

MYSQL="mysql -u  usuario  -pcontrasena'

yo lo intentaba como:

MYSQL="mysql -u  usuario  -p=contraseña'

y claro no me iba...
gracias

Para sustituir un dato de una tabla....?
ya es pasando los comandos normales de mysql a una variable no?

por cierto una dudilla que tengo sobre este script

cuando llamas a la variable $MYSQL en los cases, por qeí le redireccionas un END y luego otro al final?
supongo que el 2º es para terminar la conexión a la database, pero el 1º ni idea Oo

dark_fidodido

#5
Jue y ademas esto no me funciona ahora dentro de una "function" en un case

$MYSQL << END
...
...
...
END

eso por k puede ser??
me da un error:

line 453: syntax error: unexpected end of file


la salida END no la soporta dentro de "function"?

Modifico:
no me hagais caso era problema de los tabuladores ^^

pero ahora no me acepta las variables dentro de las llamadas a las bases de datos de mysql
xDDD
quito un problema y me salen 100 enanos....

^Tifa^

Disculpa cielo por la tardanza  :rolleyes:  es que pues... no suelo visitar mucho este subforo por ende no me entero de las actualizaciones de los temas  ;)

Citarpero ahora no me acepta las variables dentro de las llamadas a las bases de datos de mysql
xDDD

Literalmente no logro entender a que te refieres, podrias postear la parte del codigo donde te da el fallo y que es lo que intentas llamar de este  ;)

Todo es manejar de forma intermedia la sintaxis de Bash y conocer pelin sobre consultas SQL en MySQL, no es tan complicado como parece corazon  :-*

dark_fidodido

ya, si sobre consultas sé un rato y sobre bash o shell de linux tambien.
Ya resolvi el problema parece y es que las variables cuando las llamo por consultas tengo que meterlas entre comillas simples para que me las reconozca...


MYSQL='mysql -r -pContraseña'
$MYSQL << END
use tabla;
update $dato1 set tabla2='$dato2' where tabla3='$dato3'; (aquie es dnd no me reconocia las variables)
END (mi primer fallo fue pones este END con tabulador, el cual descubri que tiene que estar al principio de linea para que reconozca la salida el mysql)

gracias

^Tifa^

Me alegro por ti cielo  ;) 

Continua aprendiendo  ;-)

dark_fidodido

jajaja tiene gracia como hablas, son las mimas frase k me dice mi awela  :)

gracias a ti apañá xD