De SQLite a fichero
Publicado: 1 Septiembre, 2011 - 13:34 De SQLite a fichero
Hola a todos, otra vez estoy liado con un script, esta vez quiero que la salida de un comando sqlite3 se cambie de formato y guardarlo en un fichero.
El comando es este:
$ sqlite3 info.db "select id,service from channels"
0|30400
1|30410
2|29817
3|29810
4|29811
5|29812
6|30661
7|30620
8|30621
9|30610Lo quiero es crear un script en bash que pueda crearme un fichero asi:
update channel set xmltvid="0" where service="30400" and sourceid=1 ;
update channel set xmltvid="1" where service="30410" and sourceid=1 ;
update channel set xmltvid="2" where service="29817" and sourceid=1 ;
update channel set xmltvid="3" where service="29810" and sourceid=1 ;
update channel set xmltvid="4" where service="29811" and sourceid=1 ;
update channel set xmltvid="5" where service="29812" and sourceid=1 ;
update channel set xmltvid="6" where service="30661" and sourceid=1 ;Esto despues lo utilizo para meter en la base de datos MySQL.
¿Como lo puedo hacer?
La duda que tengo es si la salida del sqlite lo tengo pasar a un fichero y despues crear el ultimo fichero, o directamente se puede hacer todo a la vez.
Muchas gracias por vuestra ayuda.
Saludos.
- Inicie sesión o regístrese para enviar comentarios
- 321 lecturas


Hola de nuevo, he avanzado un poco pero me he atascado con el mysql.
Lo que he conseguido es sacar los datos de sqlite y meterlos en variables, ahora solo me falta actualizar la base de datos de MySQL en una linea.
#!/bin/bashsqlite3 info.db "select channel_id,service from channels" > sqlite.txt
. ~/.mythtv/mysql.txt
sourceid="1"
while read A;
do
number=`echo $A | cut -f1 -d "|"`
sid=`echo $A | cut -f2 -d "|"`
mysql --database=$DBName --user=$DBUserName --password=$DBPassword -e "charset utf8 ; update channel set xmltvid="${number}" where serviceid="${sid}" and sourceid="${sourceid}" ;"
done < sqlite.txt
El problema que tengo es con las comillas, no se cuando tengo que utilizar las dobles y cuando las simples. Lo que necesito es actualizar con un comando la bases de datos con las variables que tengo.
¿Como lo puedo hacer?
Llevo tiempo haciendo pruebas pero no me sale.
Muchas gracias y hasta pronto.
yo no se mucho sobre script de bash, pero mirate este hecho en python, yo lo utilizaba para migrar una base de datos de mysql a sqlite, a lo mejor te sirve de guia.
import MySQLdbimport sqlite3
db=MySQLdb.connect(host='localhost',user='xxx',passwd='1234',db='dgii_rnc')
cursor=db.cursor()
destino_ = sqlite3.connect("rnc55.sqlite")
cur_destino = destino_.cursor()
sql= 'SELECT rnc_cedula, nombre_razon_social, nombre_comercial, actividad_economica, fecha_constitucion, estatus FROM contribuyentes c'
cursor.execute(sql)
for row in cursor:
cur_destino.execute("insert into contribuyentes (c1, c2,c3,c4,c5, c6) VALUES (?,?,?,?,?,?)", row)
destino_.commit()