Autor Tema: SqliteDatabaseBrowser  (Leído 7922 veces)

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

Desconectado Xavi-EA5ZF

  • Full Member
  • ***
  • Mensajes: 212
  • Ham Radio Operator EA5ZF
    • Ver Perfil
    • MeteoLaVall
  • Estación: ESPVA1200000012600A
SqliteDatabaseBrowser
« en: 17 de Marzo del 2018, 12:48:56 pm »
Ayer tuve como otros muchos compañeros otro problema relacionado con los registros de hora adelantada con mi weewx, una vez analizado el tema hay que bien tirar de backup y perder una poca información ya que hay que borrar el dataloger o bien forzar que el dataloger meta todo lo posible en la base de datos y luego editarla para eliminar lo que haya en ella con fecha superior a la actual.
Para ello utilizabamos un complemento para el firefox que permitía la edición de la base de datos muy facilmente, pero con los múltiples cambios y actualizaciones que Mozilla está efectuando, por lo visto el complemento se ha hecho no compatible y no se puede utilizar,
Como lo que prima en estos casos es la urgencia ne resolver el problema y Mozilla no deja usar el complemento, la única solución rápida que he encontrado es instalar un programa directamente en el Windows que permita la edición de la base de datos con errores.
Un programa casi identico al anterior complemento de Mozilla es este:
http://sqlitebrowser.org/
Con el que ya podremos editar los registros necesarios y/o borrarlos para reparar la base de datos del weewx.
Al menos a mi me ha salvado la vida y ya vuelvo a tener la estación operativa tras un par de horas sin haber perdido ni un solo registro.
Lo dejo apuntado en el foro por su utilidad en casos de emergencia.
Xavi.

Desconectado jmviper

  • Investigación
  • Hero Member
  • ******
  • Mensajes: 4.237
  • "Vortex Complex"
    • Ver Perfil
    • www.meteoarchena.es
  • Estación: Archena - ESMUR3000000030600B
Re:SqliteDatabaseBrowser
« Respuesta #1 en: 17 de Marzo del 2018, 17:22:33 pm »
Sí, yo también es el que utilizo en Windows y en Debian, fácil y además se pueden ordenar los valores en las cabeceras en sentido ascendente o descendente con lo que enseguida pillas un dato salido de madre.

Le pongo chincheta por sugerencia entre bambalinas  *+* *+*


Archena, Valle de Ricote (Murcia). 120 msnm. 19.500 hab.
Davis Vantage Pro2 Plus

www.meteoarchena.es

Desconectado EA1AML

  • Full Member
  • ***
  • Mensajes: 102
    • Ver Perfil
  • Estación: ESCYL2400000024420A
Re:SqliteDatabaseBrowser
« Respuesta #2 en: 17 de Marzo del 2018, 17:46:16 pm »
Hola, estoy metiendome en el mundo de linux y lo primero que hago es ir provando navegadores aqui dejo un enlace, por si sirve:

https://www.linuxadictos.com/los-mejores-navegadores-web-para-linux.html
Muy interesante el mundo de linux
Saludos

Desconectado pachu

  • Full Member
  • ***
  • Mensajes: 135
    • Ver Perfil
    • www.meteolamadrid.es
  • Estación: Lamadrid (ESCTB3900000039593F)
Re:SqliteDatabaseBrowser
« Respuesta #3 en: 17 de Marzo del 2018, 19:14:20 pm »
Yo también uso ese mismo,va muy bién para modificar la base de datos.Es cierto que al principio utilizaba el complemento de  Firefox pero creo que este es mas completo y fácil de usar. :)

Desconectado Xavi-EA5ZF

  • Full Member
  • ***
  • Mensajes: 212
  • Ham Radio Operator EA5ZF
    • Ver Perfil
    • MeteoLaVall
  • Estación: ESPVA1200000012600A
Re:SqliteDatabaseBrowser
« Respuesta #4 en: 19 de Marzo del 2018, 18:55:50 pm »
Bueno, pues para completar el tema, añado un poco de información:
Pueden pasar dos cosas, o bien se ha metido información anterior a la existente dado que el sistema arranca con fecha 1980, con lo que tenemos que buscar y borrar esa información:
select * from archive where datetime < xxxxxxxxxx
delete from archive where datetime < xxxxxxxxxx
Siendo xxxxxxxxxx la fecha en epoch del primer registro que tengamos bueno.
O bien lo que se mete son datos con fecha futura, entonces lo que tenemos que hacer es:
select * from archive where datetime > xxxxxxxxxx
delete from archive where datetime > xxxxxxxxxx
En este caso xxxxxxxxxx será la ultima fecha buena codificada en epoch que tengamos, o bien lo mas seguro es meterle la hora y fecha actuales en formato epoch y borrar lo que sea superior que evidentemente es lo erróneo.
El primer comando selecciona y muestra los registros que queremos borrar y el segundo si así lo queremos y estamos seguros los borra de la BBDD.
Para convertir fechas utilizaremos una utilidad como por ejemplo esta:
https://www.epochconverter.com/

Solamente me queda una duda y es si obligatoriamente hay que cambiar la fecha en epoch que figura en el campo lastUpdate de la tabla archive_day_metadata, supongo que si porque este es el punto a partir del cual se piden datos a la estación y se empieza a actualizar, luego si no lo tocamos estaría parada hasta la llegada de esa fecha  y hora. Aquí habría que poner si la tenemos la fecha y hora de los ultimos datos que haya en la BBDD que no sean erróneos o en su defecto la fecha y hora mas aproximados que podamos, a partir de la cual se le pedirán datos al dataloger si lo hay o a la estación.
Un posible comando para ver el último registro actualizado sería:
select * from archive  where datetime > 1521158400 order by dateTime desc
Poniendo tras el signo de mayor por ejemplo la fecha de ayer o hoy a primera hora en epoch, si lo hacemos tras haber eliminado los errores de fecha futura el datetime del primer registro mostrado será la última actualización habida, si no, tendremos que eliminar los datos de fecha futura visualmente y coger el registro mas actualizado (de los que sean lógicos)

Dificil no es, pero recordar siempre que primero se localiza, luego se analiza el problema, y solo cuando estemos seguros de lo que vamos a hacer se ejecuta la solución... y siempre con copia de seguridad de la BBDD previa.
Saludos.
Xavi
« Última modificación: 21 de Marzo del 2018, 16:14:03 pm por Xavi-EA5ZF »

Desconectado edlmeteo

  • Full Member
  • ***
  • Mensajes: 108
    • Ver Perfil
  • Estación: Esparragosa de Lares (BA)- ESEXT0600000006620A Herrera del Duqe (BA)- ESEXT0600000006670A
Re:SqliteDatabaseBrowser
« Respuesta #5 en: 01 de Febrero del 2021, 11:06:39 am »
Hola, con este programa puedo generar graficas a partir del archivo weewx.sdb ?

Desconectado jantoni

  • Investigación
  • Hero Member
  • ******
  • Mensajes: 3.617
    • Ver Perfil
    • Rivas-Vaciamadrid Centro
  • Estación: ESMAD2800000028522A
Re:SqliteDatabaseBrowser
« Respuesta #6 en: 01 de Febrero del 2021, 12:44:41 pm »
No.
Las opiniones que pueda escribir no suponen asesoramiento profesional. Cada usuario tomará sus decisiones bajo su propio riesgo.

Desconectado JosMar

  • Jr. Member
  • **
  • Mensajes: 93
    • Ver Perfil
    • meteoBezana
  • Estación: ESCTB3900000039108A
Re:SqliteDatabaseBrowser
« Respuesta #7 en: 25 de Octubre del 2021, 10:17:36 am »
Hola
recupero este hilo solo para aportar, para aquellos usuarios de Linux, otra forma de modificar la base de datos de forma eficiente. Estaba acostumbrado a DB Browser pero empecé a tener algún que otro problemilla porque a pesar de que editaba con esta herramienta, la base de datos en WeeWX, en ocasiones, no se actualizaba correctamente así que me decidí a investigar una solución con Linux. Seguro que los usuarios avanzados ya la conocerán pero para los que nos estamos iniciando como yo en este SO fue todo un descubrimiento y desde entonces lo uso cada vez que tengo que modificar la base de datos. Os lo cuento a continuación y espero ser lo más claro  posible. ::)
A los admin del foro, si fuera necesario, moved este post a otro hilo que ya pudiera existir relacionado.

EDITAR BASE DE DATOS WEEWX.sdb PARA MODIFICAR UN REGISTRO

Vamos a proceder a eliminar un registro de lluvia debido a que el día 22/07/2021 a las 13:25 el pluviómetro, por error, marcó 0,8 mm de precipitación. Seguimos los siguientes pasos:

- Para realizar este cambio debemos entrar en la terminal y colocarnos en la ruta de la base de datos que, por defecto, es var/lib/weewx en las últimas versiones de WeeWX que es el software que utilizo. Antes de nada paramos WeeWX con sudo /etc/init.d/weewx stop
- Vemos que existe la base de datos como archivo weewx.sdb y sus permisos de escritura gracias al comando ls -la también sirve el comando ls -l
- A continuación invocamos el comando sqlite3 que será con el que manejemos la base de datos. Si no lo tenemos instalado se procederá con el habitual sudo apt install sqlite3
- Una vez dentro del servidor de bases de datos, vamos a seleccionar los registros dateTime, rainRate, rain que coinciden con el período de tiempo comprendido entre dateTime>1626952800 and dateTime<1626953400 and rainRate>0  (entre las 13:20 y 13:30. Para saber la fecha en formato UNIX podemos usar https://www.epochconverter.com/)
- sqlite3 buscará aquellos que satisfacen la orden anterior y vemos, según este ejemplo, que a las 13:25 del 22/07/2021 la estación marcó un registro de 0,79999999512 mm.
- Tenemos que actualizar la base de datos y poner ese registro a cero, es decir, hay que actualizar y que rain y rainRate sean cero. Para realizar esto invocamos el comando update de la siguiente manera: update archive set rainRate=0, rain=0 where dateTime>1626952800 and dateTime<1626953400 and rainRate=0;
- En este paso nos puede dar Error: attempt to write a readonly database, es decir, tenemos que salir con el comando exit y hacer un sudo su para pasar a superusuario y repetir el comando update.
- Una vez realizada la actualización hay que reconstruir la base de datos con el comando sudo wee_database –rebuild-daily –date=2021-07-22.
- No debería dar ningún error y la reconstrucción no tardará más de unos segundos.
- Tras el paso anterior debemos hacer una copia de la base de datos actual por si a futuro tenemos otro problema podamos recomenzar desde este punto. La copia se puede hacer desde la ruta en la que se encuentra con cp -a weewx.sdb weewx.sdb.OLD
- Volveremos a iniciar WeeWX con sudo /etc/init.d/weeewx start y esperaremos a que se realicen los cambios en el próximo ciclo.
- Tras la espera se puede apreciar que ya no hay registro ni de lluvia ni de intensidad de lluvia.
« Última modificación: 25 de Octubre del 2021, 10:39:52 am por JosMar »

Desconectado jmviper

  • Investigación
  • Hero Member
  • ******
  • Mensajes: 4.237
  • "Vortex Complex"
    • Ver Perfil
    • www.meteoarchena.es
  • Estación: Archena - ESMUR3000000030600B
Re:SqliteDatabaseBrowser
« Respuesta #8 en: 25 de Octubre del 2021, 11:53:44 am »
Gracias JosMar por tu aportación.

Todo esto está explicado también por jantoni en este tema del foro aunque está muy bien lo que dices de reconstruir solo ese día, así se queda el diario ya bien.

Como único apunte la base de datos se debe de editar con sudo delante (sudo sqlite3 /var/lib/weewx/weewx.sdb), no con sudo su que tras pedir contraseña dejará a root en la línea de comandos y accidentalmente se puede poner mal algo del sistema que vaya con root.

Saludos


Archena, Valle de Ricote (Murcia). 120 msnm. 19.500 hab.
Davis Vantage Pro2 Plus

www.meteoarchena.es

Desconectado JosMar

  • Jr. Member
  • **
  • Mensajes: 93
    • Ver Perfil
    • meteoBezana
  • Estación: ESCTB3900000039108A
Re:SqliteDatabaseBrowser
« Respuesta #9 en: 25 de Octubre del 2021, 12:24:18 pm »
Como único apunte la base de datos se debe de editar con sudo delante (sudo sqlite3 /var/lib/weewx/weewx.sdb), no con sudo su que tras pedir contraseña dejará a root en la línea de comandos y accidentalmente se puede poner mal algo del sistema que vaya con root.
correcto, gracias por la corrección.

saludos.

Desconectado aerf

  • Jr. Member
  • **
  • Mensajes: 84
    • Ver Perfil
    • Olmeda del Rey Meteo
  • Estación: ESCLM1600000016216A
Re:SqliteDatabaseBrowser
« Respuesta #10 en: 28 de Abril del 2022, 14:42:20 pm »
Hola
recupero este hilo solo para aportar, para aquellos usuarios de Linux, otra forma de modificar la base de datos de forma eficiente. Estaba acostumbrado a DB Browser pero empecé a tener algún que otro problemilla porque a pesar de que editaba con esta herramienta, la base de datos en WeeWX, en ocasiones, no se actualizaba correctamente así que me decidí a investigar una solución con Linux. Seguro que los usuarios avanzados ya la conocerán pero para los que nos estamos iniciando como yo en este SO fue todo un descubrimiento y desde entonces lo uso cada vez que tengo que modificar la base de datos. Os lo cuento a continuación y espero ser lo más claro  posible. ::)
A los admin del foro, si fuera necesario, moved este post a otro hilo que ya pudiera existir relacionado.

EDITAR BASE DE DATOS WEEWX.sdb PARA MODIFICAR UN REGISTRO

Vamos a proceder a eliminar un registro de lluvia debido a que el día 22/07/2021 a las 13:25 el pluviómetro, por error, marcó 0,8 mm de precipitación. Seguimos los siguientes pasos:

- Para realizar este cambio debemos entrar en la terminal y colocarnos en la ruta de la base de datos que, por defecto, es var/lib/weewx en las últimas versiones de WeeWX que es el software que utilizo. Antes de nada paramos WeeWX con sudo /etc/init.d/weewx stop
- Vemos que existe la base de datos como archivo weewx.sdb y sus permisos de escritura gracias al comando ls -la también sirve el comando ls -l
- A continuación invocamos el comando sqlite3 que será con el que manejemos la base de datos. Si no lo tenemos instalado se procederá con el habitual sudo apt install sqlite3
- Una vez dentro del servidor de bases de datos, vamos a seleccionar los registros dateTime, rainRate, rain que coinciden con el período de tiempo comprendido entre dateTime>1626952800 and dateTime<1626953400 and rainRate>0  (entre las 13:20 y 13:30. Para saber la fecha en formato UNIX podemos usar https://www.epochconverter.com/)
- sqlite3 buscará aquellos que satisfacen la orden anterior y vemos, según este ejemplo, que a las 13:25 del 22/07/2021 la estación marcó un registro de 0,79999999512 mm.
- Tenemos que actualizar la base de datos y poner ese registro a cero, es decir, hay que actualizar y que rain y rainRate sean cero. Para realizar esto invocamos el comando update de la siguiente manera: update archive set rainRate=0, rain=0 where dateTime>1626952800 and dateTime<1626953400 and rainRate=0;
- En este paso nos puede dar Error: attempt to write a readonly database, es decir, tenemos que salir con el comando exit y hacer un sudo su para pasar a superusuario y repetir el comando update.
- Una vez realizada la actualización hay que reconstruir la base de datos con el comando sudo wee_database –rebuild-daily –date=2021-07-22.
- No debería dar ningún error y la reconstrucción no tardará más de unos segundos.
- Tras el paso anterior debemos hacer una copia de la base de datos actual por si a futuro tenemos otro problema podamos recomenzar desde este punto. La copia se puede hacer desde la ruta en la que se encuentra con cp -a weewx.sdb weewx.sdb.OLD
- Volveremos a iniciar WeeWX con sudo /etc/init.d/weeewx start y esperaremos a que se realicen los cambios en el próximo ciclo.
- Tras la espera se puede apreciar que ya no hay registro ni de lluvia ni de intensidad de lluvia.

Recupero este tutorial, que me viene al pelo con una perdida de datos que tuve ayer. Mi pregunta, no es mejor hacer la copia de la base de datos antes de tocar nada y tener el archivo ( aunque sin modificar ) por si jodemos el que vamos a modificar?

Desconectado jmviper

  • Investigación
  • Hero Member
  • ******
  • Mensajes: 4.237
  • "Vortex Complex"
    • Ver Perfil
    • www.meteoarchena.es
  • Estación: Archena - ESMUR3000000030600B
Re:SqliteDatabaseBrowser
« Respuesta #11 en: 28 de Abril del 2022, 15:09:35 pm »
Justo debajo de este hilo en el subforo de weewx está el del toqueteo de la BBDD de weewx. También puedes ver en él cómo hacerlo.

Y sí, siempre es aconsejable hacer copia de la BBDD antes de editar, por si las moscas. Si usas esta utilidad de sqlitedatebasebrowser lo harás incluso más fácilmente que desde la línea de comandos. Lo que no sé es si tendrías que editarlo como root o también puedes modificarle permisos para que lo edite cualquiera y no necesariamente ser de root.



Archena, Valle de Ricote (Murcia). 120 msnm. 19.500 hab.
Davis Vantage Pro2 Plus

www.meteoarchena.es