Software > WeeWX

SqliteDatabaseBrowser

<< < (3/3)

aerf:

--- Cita de: JosMar 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.

--- Fin de la cita ---

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?

jmviper:
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.

iledesma:
Buenos días,

para poder tocar la base de datos primero hay que parar weewx.

Alguna idea de como parar weewx para un sistema iniciado con el script weewxd?

Navegación

[0] Índice de Mensajes

[*] Página Anterior

Ir a la versión completa