docs/integrations/enterprise-connectors/source-sap-hana.md
Airbyte's incubating SAP HANA enterprise source connector currently offers Full Refresh and Incrementals syncs for streams. Support for Change Data Capture (CDC) is available using a trigger-based approach.
| Feature | Supported?(Yes/No) | Notes |
|---|---|---|
| Full Refresh Sync | Yes | |
| Incremental Sync - Append | Yes | |
| Change Data Capture (CDC) | Yes |
The SAP HANA source connector supports incremental syncs using Change Data Capture (CDC) through a trigger-based approach. This method captures INSERT, UPDATE, and DELETE operations on your source tables by creating database triggers that log changes to dedicated trigger tables.
When CDC is enabled, the connector:
_ab_cdc schema_ab_trigger_change_time as the cursorNote: Trigger tables and database triggers must be manually created before enabling CDC.
For each source table, a corresponding trigger table is created with the naming convention:
_ab_cdc_ab_trigger_{source_schema}_{source_table}Each trigger table contains:
_ab_trigger_change_id: Unique identifier for each change (auto-incrementing)_ab_trigger_change_time: Timestamp when the change occurred (used as cursor)_ab_trigger_operation_type: Type of operation (INSERT, UPDATE, DELETE)_ab_trigger_{column}_before: Previous value for each source column (for UPDATE/DELETE)_ab_trigger_{column}_after: New value for each source column (for INSERT/UPDATE)To use CDC:
_ab_cdc schema_ab_cdc schema_ab_trigger_{source_schema}_{source_table}_ab_trigger_change_id, _ab_trigger_change_time, _ab_trigger_operation_type)SAP HANA data types are mapped to the following Airbyte data types when synchronizing data.
| SAP HANA Type | Airbyte Type | Notes |
|---|---|---|
BOOLEAN | BOOLEAN | |
DOUBLE | NUMBER | |
FLOAT | NUMBER | |
REAL | NUMBER | |
SMALLDECIMAL | NUMBER | |
DECIMAL | NUMBER | |
DEC | NUMBER | |
INTEGER | INTEGER | |
TINYINT | INTEGER | |
SMALLINT | INTEGER | |
BIGINT | INTEGER | |
CHAR | STRING | |
VARCHAR | STRING | |
ALPHANUM | STRING | |
NCHAR | STRING | |
NVARCHAR | STRING | |
SHORTTEXT | STRING | |
TIME | TIME_WITHOUT_TIMEZONE | |
DATE | DATE | |
SECONDDATE | TIMESTAMP_WITHOUT_TIMEZONE | |
TIMESTAMP | TIMESTAMP_WITHOUT_TIMEZONE | |
BINARY | BINARY | |
VARBINARY | BINARY | |
REAL_VECTOR | BINARY | |
BLOB | BINARY | |
CLOB | STRING | |
NCLOB | STRING | |
TEXT | STRING | |
BINTEXT | STRING | |
ST_POINT | BINARY | |
ST_GEOMETRY | BINARY |
| Input | Type | Description | Default Value |
|---|---|---|---|
host | string | Hostname of the database. | |
port | integer | Port of the database. | 443 |
username | string | The username which is used to access the database. | |
password | string | The password associated with the username. | |
schemas | array | The list of schemas to sync from. Defaults to user. Case sensitive. | |
jdbc_url_params | string | Additional properties to pass to the JDBC URL string when connecting to the database formatted as 'key=value' pairs separated by the symbol '&'. | |
encryption | object | The encryption method with is used when communicating with the database. | {"encryption_method": "unencrypted"} |
tunnel_method | object | Whether to initiate an SSH tunnel before connecting to the database, and if so, which kind of authentication to use. | {"tunnel_method": "NO_TUNNEL"} |
cursor | object | Configures how data is extracted from the database. | {"cursor_method": "user_defined"} |
checkpoint_target_interval_seconds | integer | How often (in seconds) a stream should checkpoint, when possible. | 300 |
concurrency | integer | Maximum number of concurrent queries to the database. | 1 |
check_privileges | boolean | When enabled, the connector will query each table individually to check access privileges during schema discovery. | true |
User Defined Cursor:
{
"cursor_method": "user_defined"
}
Change Data Capture (CDC):
{
"cursor_method": "cdc",
"initial_load_timeout_hours": 8,
"invalid_cdc_cursor_position_behavior": "Fail sync"
}