¿Cómo extraer datos de una Base de Datos de Odoo?

Consejos de emergencia para extracción de datos en Odoo-PostgreSQL

Cada tanto en las migraciones de Odoo ocurre algo muy curioso. Fuera de las migraciones mediante OpenUpgrade, a veces el cliente prefiere iniciar de cero migrando datos mediante archivos CSV que el propio Odoo convenientemente permite exportar e importar. Y ocurre mucho en OdooSH obtener el backup de la base, pero perder el acceso al sistema para hacer consulta de datos; y claramente no siempre se puede exportar todo. ¿Qué hacemos si no es posible realizar un restore por problemas de módulos de tercero? Si queremos ahorrar costo, podemos conseguir ciertas tablas en formatos Excel para su fácil legibilidad, y solo necesitamos un buen software de desarrollo como el VS Code o el Atom.

Extracción SQL Manual

Como bien dije, esto es solo en casos de emergencias. Si abrimos el dump.sql de Odoo en el VS Code podremos ver tablas con cierta legibilidad. Por ejemplo, si queremos encontrar todas las órdenes de venta deberemos conocer su nombre público. El nombre del módulo es sale.order y el nombre público suele ser igual pero con guiones bajos, es decir public.sale_order. Si queremos encontrar la línea que hace referencia a la tabla deberemos hacer un Search en el VS Code de la siguiente línea:

COPY public.sale_order

Es muy probable que veamos más de una línea, pero no tantas, lo importante es encontrar aquella donde se declaran los campos como columnas, algo así:

COPY public.sale_order (id, message_last_post, name [...]) FROM stdin;

Claramente el símbolo de [...] es para indicar que el contenido sigue, ahi figurará toda la lista de campos en la tabla. Lo importante es que finalice con FROM stdin. A continuación de dicha línea vamos a ver los datos correspondientes a cada columna posicional separados por una tabulación. Por ejemplo, si ahora extraigo el principio de una línea:

18492 \N SO15494

Se ve claramente como son 3 datos correspondientes a los 3 campos posicionales que se ven más arriba, y se separan por una pequeña tabulación. En mi caso, me gusta extraer todas esas líneas en un archivo nuevo y hacer un replace de las tabulaciones por una coma (,). Quedando de la siguiente manera:

18492,\N,SO15494

Finalmente se puede hacer un replace del string \N por False (ya que eso significa). Quedando de la siguiente manera:

18492,False,SO15494

Si deseamos importarlo en Odoo vamos a poder agregar una línea inicial indicando los campos, que incluso podemos copiarla de los campos declarados entre parentesis, de esa forma el archivo CSV quedaría así:

id,message_last_post,name
18492,False,SO15494


Entradas Relacionadas

# odoo
¿Cómo extraer datos de una Base de Datos de Odoo?
Ignacio Buioli 10 de enero de 2022
2 min. de lectura
Compartir
Categorías
Archivar