Connectors / Databases

Oracle Database

sink

Oracle Database sink; array DML, MERGE upsert/delete, overwrite, exactly-once, schema evolution; needs Oracle Instant Client

Install

cargo install faucet-cli --features sink-oracle
faucet init --sink oracle
# Cargo.toml — use it as a library
cargo add faucet-sink-oracle

Starter config

sink:
  type: oracle
  config:
    # connect_string: ""    # Easy Connect (`host:1521/FREEPDB1`), TNS alias, or connect descriptor.
    # host: ""    # Database host.
    # port: 0    # Listener port.
    # service_name: ""    # Service name (e.g.
    # sid: ""    # Legacy SID.
    # username: ""    # Database user.
    # password: ""    # Password for `username`.
    # external_auth: false    # Authenticate with external credentials (OS authentication or a wallet holding the credentials) instead of `username` / `…
    # tls: { ... }    # TCPS settings applied to a `host`-form connection.
    table: ""    # REQUIRED — Target table, optionally owner-qualified (`APP.EVENTS`).
    # column_mapping: { type: auto_columns }    # one of: auto_columns, json_column
      # --- Alternative variants — replace the block above with one of these ---
      # type: json_column
      # column: ""    # REQUIRED
    # identifier_case: null    # How record keys, `table`, `key` and the JSON column name map onto Oracle identifiers, which are case-sensitive once quot…
    # batch_size: 1000    # Rows per array-DML execution.
    # max_connections: 5    # Maximum pooled sessions.
    # statement_timeout_secs: 300    # Per-round-trip call timeout in seconds (`0` disables).
    # create_table: true    # Create the target table when it does not exist.
    # write_mode: null    # Write semantics for a sink.
    # key: []    # Key columns.
    # delete_marker: null    # Optional.
    # rollback: null    # Runtime rollback settings (#706): the run id to journal under, the run-id column, and whether to journal before-images / keep a replaced table.

Capabilities

Delivery Exactly-once (atomic watermark)
Write modes append, upsert, delete, overwrite
Exactly-once writes Yes
Schema evolution Yes
Scoped cleanup No
Staged bulk load No
Run rollback No
Compression No

Config fields

FieldTypeDefaultDescription
table
required
string — Target table, optionally owner-qualified (APP.EVENTS).
connect_string string — Easy Connect (host:1521/FREEPDB1), TNS alias, or connect descriptor. Mutually exclusive with host.
host string — Database host. Mutually exclusive with connect_string.
port integer — Listener port. Defaults to 1521 (2484 when tls.enabled).
service_name string — Service name (e.g. a PDB such as FREEPDB1). Mutually exclusive with sid.
sid string — Legacy SID. Mutually exclusive with service_name.
username string "" Database user. Required unless external_auth is set.
password string "" Password for username.
external_auth boolean false Authenticate with external credentials (OS authentication or a wallet holding the credentials) instead of username / password.
tls object enabled: falseserver_dn_match: true Transport encryption (TCPS) for the host form.
column_mapping object type: auto_columnson_unknown_field: warn How records map onto columns. Defaults to auto_columns.
identifier_case object preserve Identifier case rule. Defaults to preserve.
batch_size integer 1000 Rows per array-DML execution. 0 sends the whole page at once. Defaults to 1000.
max_connections integer 5 Maximum pooled sessions. Defaults to 5.
statement_timeout_secs integer 300 Per-round-trip call timeout in seconds (0 disables). Defaults to 300.
create_table boolean true Create the target table when it does not exist. Defaults to true.
write_mode object append Append (default), upsert, or delete.
key array [] Key columns. Required and non-empty for upsert/delete; ignored for append.
delete_marker object — Optional. Upsert only: rows whose field matches one of values are deletes; all others are upserts. The marker field is stripped from upsert rows before writing.
rollback object — Runtime rollback settings (#706): the run id to journal under, the run-id column, and whether to journal before-images / keep a replaced table. Injected per invocation by the CLI when a config has a top-level rollback: block — not meant to be written by hand.
Get started

Your first pipeline runs in five minutes.

Install the CLI, scaffold a config, and move real data — nothing external to stand up.

curl -LsSf https://github.com/faucet-hq/faucet-stream/releases/latest/download/faucet-cli-installer.sh | sh
brew install faucet-hq/faucet-stream/faucet-cli