Script para MySQL [Solucionado]

Hola a todos, llevo dias creando scripts para gestionar unas tablas de MySQL. El script lo que hace es cambiar la numeracion de los canales de television, pero quiero que dos canales con el mismo nombre (pero diferente fuente) se pongan en diferentes numeros. Os pongo el script:

#!/bin/bash

. ~/.mythtv/mysql.txt

echo '
charset utf8 ;
update channel set channum=channum+205 where channum < 205 ;
update channel set visible=1,channum=1 where (callsign="CANAL+" and
sourceid=6) ;
update channel set visible=1,channum=2 where (callsign="CUATRO" and
sourceid=6) ;
update channel set visible=1,channum=3 where (callsign="CUATRO" and
sourceid=5) ;
...
' | mysql --database=${DBName} --user=${DBUserName} --password=${DBPassword}

Esto lo que hace es poner el Canal+ en el numero 1, el canal Cuatro de satelite en el 2 y el canal Cuatro de TDT en el numero 3. Para saber la fuente tengo un 5 y 6. Os pongo la tabla de la fuentes:

INSERT INTO `videosource` (`sourceid`, `name`, `xmltvgrabber`,
`userid`, `freqtable`, `lineupid`, `password`, `useeit`, `configpath`,
`dvb_nit_id`) VALUES
(6, 'DVB-S EIT', 'eitonly', '', 'default', NULL, NULL, 0, NULL, -1),
(5, 'DVB-T EIT', 'eitonly', '', 'default', NULL, NULL, 1, NULL, -1);

La numeracion de las fuentes puede variar, lo que no varia es el nombre de la fuente (DVB-S y DVB-T). Lo que quiero es poder configurar el script para que me enlace el nombre de la fuente con el numero y hacer al cambio de numeracion.

He pensado en dos posibilidades:

1. Hacer una consulta para saber los numeros de cada fuente y depues hacer el cambio de numeracion de los canales.
2. En el mismo cambio de numero, hacer la conversion de nombre-> numero de las fuentes.

¿Que me recomendais? ¿Alguna sugerencia?

Muchisimas gracias por todo. Hace poco que llevo haciendo scritps para gestionar tablas, y la verdad que se pueden hacer maravillas.

Saludos y hasta pronto.

Espera, creo que no lo acabo de entender, ¿qué quieres que haga exactamente? pon un ejemplo con datos del tipo 'tengo esto, con esto y esto y quiero que quede mágicamente quede así'.

Por otra parte recuerda que es un script en bash ;). Igual te sale a cuenta hacer más de una query a mysql, convenientemente colocadas entre sentencias if y/o bucles for, y que puedes usar variables de bash dentro de las queries a mysql...

ssorgatem escribió:

Espera, creo que no lo acabo de entender, ¿qué quieres que haga exactamente? pon un ejemplo con datos del tipo 'tengo esto, con esto y esto y quiero que quede mágicamente quede así'.

Por otra parte recuerda que es un script en bash ;). Igual te sale a cuenta hacer más de una query a mysql, convenientemente colocadas entre sentencias if y/o bucles for, y que puedes usar variables de bash dentro de las queries a mysql...

Gracias por responder, lo que quiero es que en vez de poner los "sourceid=6" y "sourceid=5" poner los nombres de las fuentes (DVB-T y DVB-S) en este script:

#!/bin/bash

. ~/.mythtv/mysql.txt

echo '
charset utf8 ;
update channel set channum=channum+205 where channum < 205 ;
update channel set visible=1,channum=1 where (callsign="CANAL+" and sourceid=6) ;
update channel set visible=1,channum=2 where (callsign="CUATRO" and sourceid=6) ;
update channel set visible=1,channum=3 where (callsign="CUATRO" and sourceid=5) ;
...
' | mysql --database=${DBName} --user=${DBUserName} --password=${DBPassword}

Lo que he pensado es hacer una consulta para saber que numero toca a cada sourceid y guardar en una variable, y despues hacer el cambio con el numero (guardado en la variable).

No se si me he explicado.

Gracias de nuevo y hasta pronto.

jlazkano escribió:

Hola a todos, llevo dias creando scripts para gestionar unas tablas de MySQL. El script lo que hace es cambiar la numeracion de los canales de television, pero quiero que dos canales con el mismo nombre (pero diferente fuente) se pongan en diferentes numeros. Os pongo el script:

#!/bin/bash

. ~/.mythtv/mysql.txt

echo '
charset utf8 ;
update channel set channum=channum+205 where channum < 205 ;
update channel set visible=1,channum=1 where (callsign="CANAL+" and
sourceid=6) ;
update channel set visible=1,channum=2 where (callsign="CUATRO" and
sourceid=6) ;
update channel set visible=1,channum=3 where (callsign="CUATRO" and
sourceid=5) ;
...
' | mysql --database=${DBName} --user=${DBUserName} --password=${DBPassword}

Esto lo que hace es poner el Canal+ en el numero 1, el canal Cuatro de satelite en el 2 y el canal Cuatro de TDT en el numero 3. Para saber la fuente tengo un 5 y 6. Os pongo la tabla de la fuentes:

INSERT INTO `videosource` (`sourceid`, `name`, `xmltvgrabber`,
`userid`, `freqtable`, `lineupid`, `password`, `useeit`, `configpath`,
`dvb_nit_id`) VALUES
(6, 'DVB-S EIT', 'eitonly', '', 'default', NULL, NULL, 0, NULL, -1),
(5, 'DVB-T EIT', 'eitonly', '', 'default', NULL, NULL, 1, NULL, -1);

La numeracion de las fuentes puede variar, lo que no varia es el nombre de la fuente (DVB-S y DVB-T). Lo que quiero es poder configurar el script para que me enlace el nombre de la fuente con el numero y hacer al cambio de numeracion.

He pensado en dos posibilidades:

1. Hacer una consulta para saber los numeros de cada fuente y depues hacer el cambio de numeracion de los canales.
2. En el mismo cambio de numero, hacer la conversion de nombre-> numero de las fuentes.

¿Que me recomendais? ¿Alguna sugerencia?

Muchisimas gracias por todo. Hace poco que llevo haciendo scritps para gestionar tablas, y la verdad que se pueden hacer maravillas.

Saludos y hasta pronto.

Algo asi

update channel set visible=1,channum=3 where (callsign="CUATRO") and sourceid=( select sourceid from videosource where name="DVB-S EIT")
update channel set visible=1,channum=2 where (callsign="CUATRO") and sourceid=( select sourceid from videosource where name="DVB-T EIT")
cnicolas escribió:

Algo asi

update channel set visible=1,channum=3 where (callsign="CUATRO") and sourceid=( select sourceid from videosource where name="DVB-S EIT")
update channel set visible=1,channum=2 where (callsign="CUATRO") and sourceid=( select sourceid from videosource where name="DVB-T EIT")

Muchas gracias cnicolas!!! Funciona perfectamente, ahora ya puedo actualizar las tablas sin tener que modificar el script cada vez.

Muchisimas gracias.

Saludos.