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!!!
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;
#!/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;
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
^^
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
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
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....
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 :-*
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
Me alegro por ti cielo ;)
Continua aprendiendo ;-)
jajaja tiene gracia como hablas, son las mimas frase k me dice mi awela :)
gracias a ti apañá xD
Tengo una consulta, si necesito los datos de las consultas q realizo como puedo meterlas estas en un archivo o ... donde se guardan? por ejemplo un select count...
Espero alguien sepa como hacerlo
muchisimas gracias
En Bash (Que es el tema tratado en este post)
#!/bin/sh -x
MYSQL="mysql -u usuario -pcontrasena"
$MYSQL << END 1>/home/usuario/archivo.txt
use primaria;
show tables;
select * from ejemplo;
select count(*) from ejemplo;
END
exit 0;
Escribiria en la ruta indicada en el redireccionamiento de STDOUT al archivo indicado 'archivo.txt'
Ahora si te refieres a hacerlo en otro lenguaje (No precisamente un Script de Bash) ya es otro tema a abarcar ;)
Puede que no haya entendido del todo tu pregunta nenicita. Pero si te refieres donde la base de datos guarda las consultas que X usuario va realizando, dependiendo el motor se manejara dicho asunto, pero todas las guardan en la cache de memoria ram ;) En el caso de MySQL hay capacidad de activar un parametro en el archivo de configuracion o iniciar MySQL con esta opcion habilitada, donde se registra en un archivo todas las consultas realizadas que tomen mas de X cantidad de tiempo en retornar registros (El tiempo es modificado por el admin de la DB) pero esta opcion por lo general se deja desactivada porque genera unos logs enormes y que te ocupan mucho espacio sin necesidad tanto del espacio del disco duro como de la cache de ram. Y por lo general dicha opcion solo se activa a la hora de depurar el motor para verificar exactamente que consulta esta tomando tanto tiempo en retornar registros...
Un saludo ;)
Entendiste bien mi pregunta muchas gracias, lo probare y comento como me fue , necesito guardar los resultados de mi consulta para luego trabajar con ellos.