Docs/Streams/Features

Schema Selection Guide

Use this page to decide how much of a database a stream should read.

It explains the two main patterns:

  • auto-discovery for database sources
  • explicit table selection when you need tighter control

For source, target, and mode boundaries, see the Stream Configuration Guide.

The selection model

Schema selection applies to database-backed stream sources such as MySQL and PostgreSQL.

For file sources, S3-compatible storage, or federated SQL workflows, the scope is driven by files, paths, or query definitions instead of database schemas.

Auto-discovery

When you create a database-based stream with no explicit table list, DBConvert Streams can discover the visible tables from the source connection and use that result as the initial scope.

Use auto-discovery when:

  • you want a broad first pass over the source
  • you trust the connection user's visibility rules
  • you plan to confirm the result in the UI before running the stream

Via API, simply omit the tables field — the backend discovers visible tables automatically:

{
  "name": "full-source-pass",
  "mode": "load",
  "source": {
    "connections": [
      {
        "connectionId": "conn_SOURCE_ID",
        "database": "app_db"
      }
    ]
  },
  "target": {
    "id": "conn_TARGET_ID",
    "spec": { "db": { "database": "warehouse" } }
  }
}

Always inspect the discovered result in the UI before assuming it matches business scope.

Explicit table selection

Use an explicit tables list when:

  • only part of the source should be moved
  • only specific schemas should be included
  • the stream must stay stable even if new tables appear later
  • you need per-table custom queries in Load workflows
  • the source contains multiple business domains and the connection user can see more tables than the stream should process
{
  "name": "selected-tables",
  "mode": "load",
  "source": {
    "connections": [
      {
        "connectionId": "conn_SOURCE_ID",
        "database": "app_db",
        "schema": "public",
        "tables": [
          { "name": "products" },
          { "name": "orders" },
          { "name": "users" }
        ]
      }
    ]
  },
  "target": {
    "id": "conn_TARGET_ID",
    "spec": { "db": { "database": "warehouse" } }
  }
}

Naming behavior by database type

PostgreSQL

  • schemas matter
  • table names are commonly written as schema.table
  • the default schema is usually public

MySQL

  • the stream is usually scoped to the connected database
  • table names are typically unqualified inside that connection scope
  1. Create or test the source connection.
  2. Open it in Data Explorer to confirm what the platform can see.
  3. Use SQL Console for spot checks.
  4. Create the stream with auto-discovery or an explicit table list.
  5. Re-open the saved stream configuration and confirm the final scope before starting it.
  6. After the first run, verify the stream reached finished and the transferred row counts match expectations.