PostgreSQL
Incremental: a watermark on each entity's updated-at, applied with INSERT … ON CONFLICT DO UPDATE
Worth knowing: PostgreSQL folds unquoted identifiers to lowercase, so Datrise normalizes mixed-case source fields to snake_case
CRM and SaaS sources hand you fields that don't fit a fixed schema: custom properties, nested objects, arrays that grow. Where those land differs sharply by destination — and the answer is scattered across 22 vendors' documentation.
This is that answer in one table: the native type each destination uses for semi-structured data, the timestamp type it expects, how Datrise applies changes, and the one behaviour that surprises people. Values are written exactly as the vendor names them, so they match what you'd search.
Relational databases
| Destination | Semi-structured fields land as | Timestamps | Load pattern |
|---|---|---|---|
| PostgreSQL | jsonb columns | timestamptz | upsert |
| MySQL | JSON columns | DATETIME/TIMESTAMP | upsert |
| Microsoft SQL Server | NVARCHAR(MAX) JSON columns | datetime2 | upsert |
| Oracle Database | JSON or CLOB columns | TIMESTAMP WITH TIME ZONE | upsert |
| Supabase | jsonb columns | timestamptz | upsert |
| Neon | jsonb columns | timestamptz | upsert |
| PlanetScale | JSON columns | DATETIME | upsert |
Cloud warehouses
| Destination | Semi-structured fields land as | Timestamps | Load pattern |
|---|---|---|---|
| Snowflake | VARIANT columns | TIMESTAMP_TZ | upsert |
| Google BigQuery | JSON or nested/repeated (STRUCT) columns | TIMESTAMP | upsert |
| Amazon Redshift | SUPER columns | TIMESTAMPTZ | upsert |
| Databricks SQL Warehouse | VARIANT or STRUCT columns | TIMESTAMP | upsert |
| Azure Synapse | NVARCHAR(MAX) JSON columns | datetime2 | upsert |
OLAP engines
| Destination | Semi-structured fields land as | Timestamps | Load pattern |
|---|---|---|---|
| ClickHouse | JSON or Map columns | DateTime64 | upsert |
| DuckDB | JSON or STRUCT columns | TIMESTAMP WITH TIME ZONE | snapshot |
Data lakes
| Destination | Semi-structured fields land as | Timestamps | Load pattern |
|---|---|---|---|
| Amazon Athena | struct/map columns in Parquet | timestamp | file merge |
| Amazon S3 Data Lake | nested struct/map fields in Parquet | ISO-8601 timestamp columns | file merge |
| Azure Data Lake Storage | nested struct/map fields in Parquet | ISO-8601 timestamp columns | file merge |
Document stores
| Destination | Semi-structured fields land as | Timestamps | Load pattern |
|---|---|---|---|
| MongoDB | native nested documents | BSON Date | upsert |
| Amazon DynamoDB | nested map/list attributes | ISO-8601 string or epoch number attributes | upsert |
Spreadsheets and files
| Destination | Semi-structured fields land as | Timestamps | Load pattern |
|---|---|---|---|
| Spreadsheets | JSON-stringified cells for nested fields | ISO-8601 text or serial date cells | snapshot |
| Airtable | long-text JSON or linked records for nested data | date/dateTime fields | upsert |
| CSV Files | JSON-encoded strings for nested fields | ISO-8601 timestamp columns | snapshot |
One entry per destination: the incremental mechanic Datrise uses, then the behaviour worth knowing before you pick it.
Incremental: a watermark on each entity's updated-at, applied with INSERT … ON CONFLICT DO UPDATE
Worth knowing: PostgreSQL folds unquoted identifiers to lowercase, so Datrise normalizes mixed-case source fields to snake_case
Incremental: a watermark on updated-at, applied with INSERT … ON DUPLICATE KEY UPDATE
Worth knowing: MySQL collation matters for CRM text, so Datrise lands utf8mb4 to preserve emoji and non-Latin characters
Incremental: a watermark on updated-at, applied with a MERGE statement
Worth knowing: SQL Server defaults to a case-insensitive collation, so Datrise preserves original casing in a metadata column to avoid silent key collisions
Incremental: a watermark on updated-at, applied with MERGE INTO
Worth knowing: Oracle treats an empty string as NULL, so Datrise distinguishes blank source values from missing ones during load
Incremental: a watermark on updated-at, applied with INSERT … ON CONFLICT DO UPDATE
Worth knowing: Datrise lands into a dedicated schema and leaves row-level security to you, so synced tables don't inherit public access by accident
Incremental: a watermark on updated-at, applied with INSERT … ON CONFLICT DO UPDATE
Worth knowing: Neon separates compute from storage, so Datrise batches writes to keep autoscaling compute from cold-starting on every small change
Incremental: a watermark on updated-at, applied with INSERT … ON DUPLICATE KEY UPDATE
Worth knowing: PlanetScale disallows foreign-key constraints by default, so Datrise models relationships by stable id columns rather than enforced FKs
Incremental: staged loads merged on stable id with MERGE, so credits scale with change volume, not table size
Worth knowing: Snowflake upper-cases unquoted identifiers, so Datrise standardizes on lower-case quoted names to keep column references stable
Incremental: appends to a staging table, then MERGE on stable id into the partitioned target
Worth knowing: BigQuery bills by bytes scanned, so Datrise partitions and clusters every table to keep query costs predictable
Incremental: COPY from staged files, then a delete-and-insert merge on stable id
Worth knowing: Redshift performance hinges on dist/sort keys, so Datrise picks them from your entity ids and sync timestamps rather than defaulting to EVEN distribution
Incremental: a Delta MERGE on stable id, with change history available via time travel
Worth knowing: Datrise writes Unity Catalog–governed Delta tables, so lineage and permissions are managed centrally rather than per-notebook
Incremental: COPY into staging, then a MERGE on stable id
Worth knowing: Synapse dedicated pools reward good hash-distribution choices, so Datrise distributes on entity ids to avoid data-movement-heavy joins
Incremental: inserts into a ReplacingMergeTree keyed on stable id, so the latest version wins on merge
Worth knowing: ClickHouse deduplicates asynchronously on merge, so Datrise uses ReplacingMergeTree and FINAL-safe queries rather than assuming immediate upserts
Incremental: rewrites changed entities into the local database (or Parquet) on each run
Worth knowing: DuckDB is single-writer and embedded, so Datrise produces a consistent file snapshot rather than concurrent streaming writes
Incremental: writes new Parquet partitions and registers them in the Glue Data Catalog
Worth knowing: Athena bills per byte scanned and small files hurt, so Datrise compacts to right-sized Parquet rather than many tiny objects
Incremental: writes new date partitions and compacts small files on a schedule
Worth knowing: A lake has no schema enforcement, so Datrise writes a schema manifest alongside the data to keep downstream engines consistent
Incremental: writes new date partitions to the container and compacts on a schedule
Worth knowing: ADLS hierarchical namespace makes folder layout matter, so Datrise keeps a predictable entity/date path your Azure engines mount directly
Incremental: upserts by stable id with updateOne(upsert) on the source primary key
Worth knowing: Mongo has no fixed schema, so Datrise keeps field types consistent across documents to avoid mixed-type query surprises
Incremental: PutItem/UpdateItem keyed on a partition key derived from the entity id
Worth knowing: DynamoDB rewards access-pattern-first key design, so Datrise sets partition/sort keys from your entity ids rather than scan-heavy defaults
Incremental: refreshes the tab's rows each run, preserving header order
Worth knowing: Sheets caps out around the low millions of cells, so Datrise lands a curated column set rather than every raw field
Incremental: upserts records matched on a stable id field
Worth knowing: Airtable enforces per-base record and API rate limits, so Datrise batches writes and lands a focused field set
Incremental: writes a fresh, fully-typed CSV per entity each run
Worth knowing: CSV has no types, so Datrise emits a companion schema and quotes/escapes consistently so downstream loaders don't misparse commas and newlines
Datrise also delivers to 21 BI tools, and every one of them resolves to the same answer: nested fields arrive flattened into columns their modelling layer can chart. That's one fact, not 21 — so listing them here would pad the page without informing anyone. BI tools read from a store that is in the table above; pick the store first.
Early access
This page tells you what each destination does with your data. Datrise does it for you — modelled entities, incremental sync, typed tables, no scripts to babysit. Join the waitlist and we'll bring you in when your source and destination pair is ready.