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 REGISTROVamos 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.