An open-source relational database, PostgreSQL is a powerful and well-known system that has received recognition from both its users and the industry at large. Unlike some other database systems, PostgreSQL is completely customizable and yours to do with as you please (assuming, of course, that your instance is self-hosted).

For a more in-depth look at PostgreSQL, click here.


Pricing

Pricing for PostgreSQL depends on where your instance is hosted.

  • Self-hosted: PostgreSQL is open-source, meaning you don’t need to pay an upfront cost to obtain the necessary software. You may, however, have hosting and maintenance costs associated with the server housing the instance. You may have to do a little bit of internal number crunching to figure out these potential costs.
  • Heroku: Heroku has a variety of plans to choose from, and a guide to help you select the right plan for you or your company.
  • Amazon Aurora and RDS: Amazon offers a variety of plans for both on-demand instances and Multi-AZ Deployment. To get an estimate of what your monthly bill might look like, check out their monthly calculator.
  • Google CloudSQL PostgreSQL: Unlike many other cloud-based data warehouse solutions, Google’s pricing model is based on usage and not a fixed-rate. This means that your bill can vary over time.

    Before fully committing yourself to using Google CloudSQL PostgreSQL as your data warehouse, we recommend familiarizing yourself with Google’s pricing model and using their pricing calculator to estimate your potential costs.


Setup

High-level details about Stitch’s implementation of PostgreSQL, such as supported connection methods, availability on Stitch plans, etc.

Release status

Released

Pricing tier

All Stitch plans

Supported versions

9.3 or higher

PostgreSQL destinations must be running version 9.3 or newer.

SSH connections

Supported

Stitch supports using SSH tunnels to connect to the following PostgreSQL-backed destinations:

SSL connections

Supported

Stitch will attempt to use SSL to connect by default. No additional configuration is needed on your part.

VPN connections

Unsupported

Setup documentation


Replication

Details about Stitch and replication for PostgreSQL destinations.

Incremental Replication - Upserts

Supported

Using a table’s Primary Keys, Stitch will perform an update operation on existing rows to overwrite the data.

Primary Keys

Supported

PostgreSQL destinations natively support Primary Keys.

Stitch requires Primary Keys to de-dupe data during Incremental Replication. Primary Key columns are created using Primary Key constraints, which requires that values be both unique and not null.

Multipe data types

Unsupported

PostgreSQL destinations do not support multiple data types in a single column.

To accommodate this scenario, Stitch will create additional columns for each data type. Refer to the Table structural changes guide for examples and more info.

Nested data structure support

Unsupported

PostgreSQL destinations do not have native support for nested data structures.

To ensure nested data can be loaded, Stitch will flatten objects and arrays into columns and subtables, respectively. For more info and examples, refer to the Handling nested data structures guide.

Incompatible sources

Has possible incompatibilities

Incompatibilities may exist with the following integrations:

Refer to the Destination and integration compatibility guide for more info.


Limitations

In this section:

  • Object name limits - Details about object naming rules imposed by PostgreSQL destinations.

  • Table limits - Details about table rules imposed by PostgreSQL destinations.

  • Data limits - Details about data limitations imposed by PostgreSQL destinations.

  • Column naming - Details about transformations performed by Stitch to ensure source column names adhere to the object naming rules imposed by PostgreSQL destinations.

Object name limits

Details about object naming rules imposed by PostgreSQL destinations.

Case sensitivity

Sensitive

This means that PostgreSQL destinations treat upper- and lowercase characters as different characters. For example: CUSTOMERID and customerid are unique.

Refer to the Column naming section of this guide for examples.

Table name length

63 characters

Tables with names that exceed this limit will be rejected. Rejected tables are logged in the _sdc_rejected table.

Column name length

59 characters

Columns with names that exceed this limit will be rejected. Rejected columns are logged in the _sdc_rejected table.

Table limits

Details about table rules imposed by PostgreSQL destinations.

Max # of columns per table

250-1,600 columns

Max # of tables per database

100,000 tables

Data limits

Details about data limitations imposed by PostgreSQL destinations.

Max record size

4 MB

Records that exceed this limit will be rejected. Rejected columns are logged in the _sdc_rejected table.

Timezone support

Unsupported

PostgreSQL will store the value in UTC as TIMESTAMP WITHOUT TIMEZONE.

More info about timestamp data types can be found in PostgreSQL’s documentation.

Date ranges

4713 BC to 294276 AD

Date values outside of this range will be rejected and logged in the sdc_rejected table.

More info about PostgreSQL date data types can be found in PostgreSQL’s documentation.

Timestamp ranges

4713 BC to 294276 AD

Timestamp values outside of this range will be rejected and logged in the sdc_rejected table.

More info about PostgreSQL time data types can be found in PostgreSQL’s documentation.

Integer range

-9223372036854775808 to 9223372036854775807

Integer values outside of this range will be rejected and logged in the _sdc_rejected table.

Decimal range

Up to 131,072 digits before the decimal; up to 16,383 digits after

Decimal values outside of this range will be rejected and logged in the _sdc_rejected table.

More info about decimal data types can be found in PostgreSQL’s documentation.

VARCHAR max width

None

PostgreSQL stores all VARCHAR/TEXT data as TEXT, which can store strings with unlimited lengths.

While there aren’t any size limits on string data, the record as a whole must still be less than 4 MB or it will be rejected and logged in the _sdc_rejected table.

Column naming

Details about transformations performed by Stitch to ensure source column names adhere to the object naming rules imposed by PostgreSQL destinations.

Source column name Destination column name
Mixed case CuStOmErID CuStOmErID
Contains spaces customer id customer id
Contains unsupported characters !customer# id customer id
Name begins with an underscore _customerid _customerid
Name begins with a non-letter 123customerid customerid

Compare destinations

Not sure if PostgreSQL is the data warehouse for you? Check out the Choosing a Stitch Destination guide to compare each of Stitch’s destination offerings.


Questions? Feedback?

Did this article help? If you have questions or feedback, feel free to submit a pull request with your suggestions, open an issue on GitHub, or reach out to us.