Connectors → PostgreSQL

About PostgreSQL

PostgreSQL is a powerful open-source relational database management system. PostgreSQL uses and extends the SQL language, while also combining safety and scalability features. A relational database organizes data into tables. These tables contain data types that can have relations. These relationships help structure the data. Programmers use SQL to create, extract, modify, and control access to data in a relational database.

PostgreSQL Connector Updates

This section is to explore the updates in the newer versions of the PostgreSQL connector available on the Incorta connectors marketplace.

In order to get the newer version of the connector, please update the connector using the marketplace.

VersionUpdates
2.0.2.0Introduce log-based incremental load support with a known limitation that in case of deleting records and performing full load, you must reconfigure the Debezium connector to avoid retrieving deleted records from the snapshot.
2.0.2.2Fixed the known limitation in 2.0.2.0.
Recommendation

Keep your connector up-to-date with the latest connector version released to get all introduced fixes and enhancements.

PostgreSQL Connector

Incorta loads data from a PostgreSQL database using the PostgreSQL connector. The PostgreSQL connector uses the 42.2.1 PostgreSQL driver.

The PostgreSQL connector supports the following Incorta specific functionality:


FeatureSupported
Chunking
Data Agent
Encryption at Ingest
Incremental Load
Multi-Source
OAuth
Performance Optimized
Remote
Single-Source
Spark Extraction
Webhook Callbacks

Steps to connect PostgreSQL and Incorta

To connect PostgreSQL and Incorta, here are the high level steps, tools, and procedures:

Create an external data source

Here are the steps to create a external data source with the PostgreSQL connector:

  • Sign in to the Incorta Direct Data Platform.
  • In the Navigation bar, select Data.
  • In the Action bar, select + NewAdd Data Source.
  • In the Choose a Data Source dialog, in Database, select PostgreSQL.
  • In the New Data Source dialog, specify the applicable connector properties.
  • To test, select Test Connection.
  • Select Ok to save your changes.

PostgreSQL connector properties

Here are the properties for the PostgreSQL connector:


PropertyControlDescription
Data Source Nametext boxEnter the name of the data source
Usernametext boxEnter the database username
Passwordtext boxEnter the database password
Connection Pooltext boxEnter the connection pool. The default is 30.
Connection Stringtext boxEnter the connection string for the PostgreSQL JDBC driver. The format is: jdbc:postgresql://<HOST>:<PORT>/<DATABASE_NAME>
The default JDBC port for a PostgreSQL Database is: 5432. Verify port numbers with your datasource configurations.
Connection Propertiestext boxCustomized string input of key/value pair properties. See below for details on connection properties.
Extra Optionstext boxEnter supported extra options in the form of key=value.
Use Data AgenttoggleEnable using a data agent to securely ingest data from an external data source that is behind a firewall.
For more information, please review Tools → Data Agent and Tools → Data Manager.
Data Agentdrop down listEnable Use Data Agent to configure this property. Select from the data agents created in the tenant, if any.

Important: Data Agent

A data agent is a service that runs on a remote host. It is also a data agent object in the Data Manager for a given tenant. An authentication file shared between the data agent object and the data agent service enables an authorized connection without using a VPN or SSH tunnel. With a data agent, you can securely extract data from one or more databases behind a firewall to an Incorta cluster. Your Incorta cluster can reside on-premises or in the cloud.

You must have the Incorta cluster enabled and configured to support the use of Data Agents. To learn more, see Concepts → Data Agent and Tools → Data Agent.


Connection Properties

The connection properties allow for customized connection to your PostgreSQL database. The properties are accepted in a key/value format(example: key=value). The 42.2.1 PostgreSQL driver determines the available connection properties. For a list of connection properties available with Incorta and a PostgreSQL database refer to Configuration Properties for Connector.

Create a schema with the Schema Wizard

Here are the steps to create an PostgreSQL schema with the Schema Wizard:

  • Sign in to the Incorta Direct Data Platform.
  • In the Navigation bar, select Schema.
  • In the Action bar, select + New → Schema Wizard.
  • In (1) Choose a Source, specify the following:
    • For Enter a name, enter the schema name.
    • For Select a Datasource, select the PostgreSQL external data source.
    • Optionally create a description.
  • In the Schema Wizard footer, select Next.
  • In (2) Manage Tables, in the Data Panel, first select the name of the Data Source, and then check the Select All checkbox.
  • In the Schema Wizard footer, select Next.
  • In (3) Finalize, in the Schema Wizard footer, select Create Schema.

Create a schema with the Schema Designer

Here are the steps to create an PostgreSQL schema using the Schema Designer:

  • Sign in to the Incorta Direct Data Platform.
  • In the Navigation bar, select Schema.
  • In the Action bar, select + New → Create Schema.
  • In Name, specify the schema name, and select Save.
  • In Start adding tables to your schema, select SQL Database.
  • In the Data Source dialog, specify the PostgreSQL table data source properties.
  • Select Add.
  • In the Table Editor, in the Table Summary section, enter the table name.
  • To save your changes, select Done in the Action bar.

PostgreSQL table data source properties

For a schema table in Incorta, you can define the following PostgreSQL specific data source properties as follows:


PropertyControlDescription
Typedrop down listDefault is SQL Database
Data Sourcedrop down listSelect the PostgreSQL external data source
IncrementaltoggleEnable the incremental load configuration for the schema table. See incremental load.
Fetch Sizetext boxUsed for performance improvement, fetch size defines the number of records that will be retrieved from the database in each batch until all records are retrieved. The default is 5000.
Querytext boxEnter the SQL query to retrieve data from the PostgreSQL database
Update Querytext boxDefine the SQL update query to use during an incremental load. (Visible when Incremental is enabled)
Incremental Field Typedrop down listSelect what the format of the incremental field type is: Timestamp, Unix Epoch (seconds), or Unix Epoch (milliseconds). (Visible when Incremental is enabled)
CallbacktoggleTurn this option on to enable the Callback URL field
Callback URLtext boxThis property appears when the Callback toggle is turned on. Specify the URL. (Visible when callback is enabled)


View the schema diagram with the Schema Diagram Viewer

Here are the steps to view the schema diagram using the Schema Diagram Viewer:

  • Sign in to the Incorta Direct Data Platform.
  • In the Navigation bar, select Schema.
  • In the list of schemas, select the PostgreSQL schema.
  • In the Schema Designer, in the Action bar, select Diagram.

Load the schema

Here are the steps to perform a Full Load of the PostgreSQL schema using the Schema Designer:

  • Sign in to the Incorta Direct Data Platform.
  • In the Navigation bar, select Schema.
  • In the list of schemas, select the PostgreSQL schema.
  • In the Schema Designer, in the Action bar, select LoadFull Load.
  • To review the load status, in Last Load Status, select the date.

Explore the schema

With the full load of the PostgreSQL schema complete, you can use the Analyzer to explore the schema, create your first insight, and save the insight to a new dashboard.

To open the Analyzer from the schema, follow these steps:

  • In the Navigation bar, select Schema.
  • In the Schema Manager, in the List view, select the PostgreSQL schema.
  • In the Schema Designer, in the Action bar, select Explore Data.

Additional Considerations

Incremental Load

You can enable one type of incremental load for a PostgreSQL table data source.

Last Successful Extract Time Fetch updates since the last time the tables were loaded. Determined by the difference between the current time and the database timestamp.

Note

Changing to or from the incremental load strategy requires a full load to ensure data integrity.

Log-based incremental load

Starting the connector version 2.0.2.0, Incorta supports the log-based incremental load using the change data capture (CDC).

CDC is the process of identifying and capturing changes made to data in a database using logs and then delivering those changes in real time to a downstream process or system.

Note

Currently, the log-based incremental load is a preview feature.

Prerequisites

To be able to use the log-based incremental load, you need to be aware of and apply the following:

  1. Install and configure Apache Kafka and Kafka Connect.
  2. Configure Debezium connector, knowing that Incorta recommends using Debezium version 2.4.1.
  3. Disable snapshot while configuring Debezium.
  4. Make sure Debezium connector is configured to send data types to Incorta by adding the propagate property.
  5. Log-based incremental load only supports database physical tables.
  6. Tables must have primary keys.

Known limitations

  • For the time being, Incorta does not track deletion updates through the log-based incremental load (CDC).
  • Minimal mismatch in column INTERVAL data types.
  • This feature supports Kafka topics that use a single partition only.
Incremental Load Example

In this example, the invoices table must contain a column of the type Date or Timestamp in order to load the table incrementally with a last successful extract time strategy. In this case, the name of the date column is ModifiedDate and the format of the column is Timestamp.

Here are the data source property values for this scenario:

  • Incremental is enabled
  • Query contains SELECT * FROM invoices
  • Update Query contains SELECT * FROM invoices WHERE ModifiedDate > ?
Note

? is a variable in the update query that contains the last schema refresh date.

  • Incremental Field Type = Timestamp
Note

Incorta replaces the ? reference character with a value.

Valid Query Types

When creating a query for your PostgreSQL Connector only SELECT statements are valid.