Skip to Content

Data Warehouse Sync

166.95 166.95

Instant digital delivery after payment confirmation.
License: OPL-1, every download is watermarked.
Terms and Conditions
Compatible with Odoo 18.0 · 19.0
OPL-1 license · Odoo 18.0 & 19.0
Data Warehouse Sync for Odoo — preview banner

Data Warehouse Sync

Scheduled BYOK export of Odoo tables to your Postgres / BigQuery / Snowflake

BI tools struggle to reach Odoo without hammering the live database, and copying data out by hand is fragile. This module pushes selected Odoo models to your OWN data warehouse on a schedule so your analytics stack reads from the warehouse instead. It is bring-your-own-key: you supply the target connection and credentials and nothing is hosted or proxied by us. PostgreSQL targets sync live via psycopg2 with automatic DDL and upsert, while BigQuery and Snowflake targets generate timestamped NDJSON load files for your own loader. Pick models, map fields, choose full or incremental (write_date watermark) sync, and an hourly or daily cron keeps the warehouse fresh — with a full run history of rows, duration and errors. Built for data teams, analysts and BI leads.

Key Features

BYOK warehouse targets

gb.dwh.target holds a warehouse_type of PostgreSQL, BigQuery or Snowflake with your own host, database, schema, credentials and SSL mode. Nothing is hosted by us — you supply the connection. action_test_connection opens a real psycopg2 session and runs SELECT 1 so you can validate a Postgres target before scheduling it.

Live PostgreSQL sync with upsert

_sync_postgres connects via psycopg2 and writes straight into your warehouse using INSERT ... ON CONFLICT (id) DO UPDATE, so re-runs upsert rather than duplicate. execute_values batches the writes for throughput, and a full-refresh run TRUNCATEs the destination table first.

File export for BigQuery and Snowflake

_sync_file_export writes timestamped NDJSON files to the target's export_path, one JSON object per row, ready for your own BYOK loader (bq load, Snowflake COPY). This keeps cloud-warehouse credentials in your tooling, not in Odoo — honest about what runs where.

Per-table model and field mapping

Each gb.dwh.table picks an ir.model, an optional safe-eval domain filter and a destination name. gb.dwh.field maps each selected ir.model.fields to a destination column, and action_add_all_fields populates every stored, non-x2many field in one click.

Automatic DDL and type mapping

For Postgres targets the sync runs CREATE SCHEMA / CREATE TABLE IF NOT EXISTS and ALTER TABLE ADD COLUMN IF NOT EXISTS so the destination always matches your selection. A _TYPE_MAP converts Odoo ttypes to SQL types (integer to BIGINT, monetary to NUMERIC, datetime to TIMESTAMP, json to JSONB).

Full or incremental sync

sync_mode is full refresh or incremental. In incremental mode _read_records adds a write_date > watermark clause and advances the stored watermark to the highest write_date exported, so after the first load only changed records ship — fast and low-impact on Odoo.

Batched reads, configurable size

_read_records pages through matching IDs in batch_size chunks (default 2000) and read()s each page, serialising many2one tuples to their id and dates to ISO strings. Large models export without loading everything into memory at once.

Scheduling, run-now wizard and history

The cron_sync job runs every target whose schedule matches hourly or daily, while gb.dwh.run.wizard triggers an ad-hoc sync of chosen tables (with optional raise-on-error). Every gb.dwh.run records mode, row_count, duration, state (running/done/error) and the captured error_message for monitoring.

Use Cases

A data team mirrors sale.order and account.move into their reporting Postgres nightly so Metabase never queries live Odoo.
An analyst sets incremental sync on a large model so only records changed since the last run are pushed.
A BigQuery shop exports NDJSON files on a schedule and loads them with their own bq load job and service account.
An ops engineer tests a new Postgres target's connection before enabling its daily schedule.
A BI lead selects just the columns finance needs from account.move.line with a domain filter to keep the warehouse lean.
An admin checks the run history to confirm last night's sync completed and see exactly how many rows shipped.

Screenshots

Data Warehouse Sync — Run Sync Now in Odoo

Run Sync Now

Why Choose This Module

BI tools struggle to reach Odoo without hammering the live database. This module pushes selected Odoo models to your own data warehouse on a schedule, so your analytics stack reads from the warehouse instead. It's bring-your-own-key: you supply the target connection and credentials — nothing is hosted or proxied by us.

Specifications

  • Compatible: Odoo 18.0 / 19.0
  • License: OPL-1
  • Languages: English
  • Author: Pokutsoft
  • Dependencies: base
  • Support: support@pokutsoft.com

Update date: 2026-07-02