From c7ccf05a5cfc34f2bdf8ff409c07735c725b6280 Mon Sep 17 00:00:00 2001 From: Paul Cornell Date: Wed, 11 Dec 2024 16:47:18 -0800 Subject: [PATCH 1/4] Platform: PostgreSQL source and destination connectors --- mint.json | 2 + platform/connectors.mdx | 2 + platform/destinations/overview.mdx | 1 + platform/destinations/postgresql.mdx | 64 +++++++------------ platform/sources/overview.mdx | 1 + platform/sources/postgresql.mdx | 26 ++++++++ .../postgresql-platform.mdx | 12 ++++ snippets/general-shared-text/postgresql.mdx | 35 ++++++++-- 8 files changed, 95 insertions(+), 48 deletions(-) create mode 100644 platform/sources/postgresql.mdx create mode 100644 snippets/general-shared-text/postgresql-platform.mdx diff --git a/mint.json b/mint.json index 7dd8714e..62d4d987 100644 --- a/mint.json +++ b/mint.json @@ -477,6 +477,7 @@ "platform/sources/mongodb", "platform/sources/onedrive", "platform/sources/outlook", + "platform/sources/postgresql", "platform/sources/s3", "platform/sources/sharepoint" ] @@ -495,6 +496,7 @@ "platform/destinations/mongodb", "platform/destinations/onedrive", "platform/destinations/pinecone", + "platform/destinations/postgresql", "platform/destinations/s3", "platform/destinations/weaviate" ] diff --git a/platform/connectors.mdx b/platform/connectors.mdx index 9cba991d..a1e0f5f6 100644 --- a/platform/connectors.mdx +++ b/platform/connectors.mdx @@ -18,6 +18,7 @@ The Unstructured Platform supports connecting to the following source and destin - [MongoDB](/platform/sources/mongodb) - [OneDrive](/platform/sources/onedrive) - [Outlook](/platform/sources/outlook) +- [PostgreSQL](/platform/sources/postgresql) - [S3](/platform/sources/s3) - [SharePoint](/platform/sources/sharepoint) @@ -38,6 +39,7 @@ If your source is not listed here, you might still be able to connect Unstructur - [MongoDB](/platform/destinations/mongodb) - [OneDrive](/platform/destinations/onedrive) - [Pinecone](/platform/destinations/pinecone) +- [PostgreSQL](/platform/destinations/postgresql) - [S3](/platform/destinations/s3) - [Weaviate](/platform/destinations/weaviate) diff --git a/platform/destinations/overview.mdx b/platform/destinations/overview.mdx index eb3cbccc..30b38066 100644 --- a/platform/destinations/overview.mdx +++ b/platform/destinations/overview.mdx @@ -27,6 +27,7 @@ To create a destination connector: - [MongoDB](/platform/destinations/mongodb) - [OneDrive](/platform/destinations/onedrive) - [Pinecone](/platform/destinations/pinecone) + - [PostgreSQL](/platform/destinations/postgresql) - [S3](/platform/destinations/s3) - [Weaviate](/platform/destinations/weaviate) diff --git a/platform/destinations/postgresql.mdx b/platform/destinations/postgresql.mdx index 8c96f4a5..a6861935 100644 --- a/platform/destinations/postgresql.mdx +++ b/platform/destinations/postgresql.mdx @@ -1,46 +1,26 @@ --- title: PostgreSQL -description: This page contains the information to store processed data to a PostgreSQL database. --- -## Prerequisites - -* PostgreSQL Server Hostname - -* Database Name and Port Number - -* Username and Password for Database Access - - -For more information, please refer to [PostgreSQL documentation](https://www.postgresql.org/docs/). - - - -Ensure that the index schema is compatible with the data you intend to write. If you need guidance on structuring your schema, consult the [Sample Index Schema](/open-source/ingest/destination-connectors/sql#sample-index-schema) for reference. - - -## Step-by-Step Guide - -![Destination Connector PostgreSQL](/img/platform/Destination-PostgreSQL.png) - -1. **Access the Create Destination Page**. Navigate to the “Destinations” section within the platform’s side navigation menu and click on “New Destination” to initiate the setup of a new destination for your processed data. - -2. **Select Destination Type**. Select **PostgreSQL** destination connector from the `Type` dropdown menu. - -3. **Configure Destination Details** - - -* `Name` (_required_): Assign a descriptive name to the new destination connector. - -* `Host` (_required_): Enter the hostname or IP address of the PostgreSQL server. - -* `Database` (_required_): Provide the name of the PostgreSQL database. - -* `Port`: Specify the port number for the PostgreSQL server (default is 5432). - -* `Username`: Input the username for the PostgreSQL database access. - -* `Password`: Enter the password associated with the username. - - -4. **Submit**. Review all the details entered to ensure accuracy. Click ‘Submit’ to finalize the creation of the Destination Connector. The newly completed PostgreSQL connector will be listed on the Destinations dashboard. \ No newline at end of file +Send processed data from Unstructured to PostgreSQL. + +The requirements are as follows. + +import PostgreSQLPrerequisites from '/snippets/general-shared-text/postgresql.mdx'; + + + +To create the destination connector: + +1. On the sidebar, click **Connectors**. +2. Click **Destinations**. +3. Cick **New** or **Create Connector**. +4. Give the connector some unique **Name**. +5. In the **Provider** area, click **PostgreSQL**. +6. Click **Continue**. +7. Follow the on-screen instructions to fill in the fields as described later on this page. +8. Click **Save and Test**. + +import PostgreSQLFields from '/snippets/general-shared-text/postgresql-platform.mdx'; + + \ No newline at end of file diff --git a/platform/sources/overview.mdx b/platform/sources/overview.mdx index 5c91b937..dfcd4aba 100644 --- a/platform/sources/overview.mdx +++ b/platform/sources/overview.mdx @@ -25,6 +25,7 @@ To create a source connector: - [MongoDB](/platform/sources/mongodb) - [OneDrive](/platform/sources/onedrive) - [Outlook](/platform/sources/outlook) + - [PostgreSQL](/platform/sources/postgresql) - [S3](/platform/sources/s3) - [SharePoint](/platform/source/sharepoint) diff --git a/platform/sources/postgresql.mdx b/platform/sources/postgresql.mdx new file mode 100644 index 00000000..405da5b6 --- /dev/null +++ b/platform/sources/postgresql.mdx @@ -0,0 +1,26 @@ +--- +title: PostgreSQL +--- + +Ingest your files into Unstructured from PostgreSQL. + +The requirements are as follows. + +import PostgreSQLPrerequisites from '/snippets/general-shared-text/postgresql.mdx'; + + + +To create the source connector: + +1. On the sidebar, click **Connectors**. +2. Click **Sources**. +3. Cick **New** or **Create Connector**. +4. Give the connector some unique **Name**. +5. In the **Provider** area, click **PostgreSQL**. +6. Click **Continue**. +7. Follow the on-screen instructions to fill in the fields as described later on this page. +8. Click **Save and Test**. + +import PostgreSQLFields from '/snippets/general-shared-text/postgresql-platform.mdx'; + + \ No newline at end of file diff --git a/snippets/general-shared-text/postgresql-platform.mdx b/snippets/general-shared-text/postgresql-platform.mdx new file mode 100644 index 00000000..90ffe96e --- /dev/null +++ b/snippets/general-shared-text/postgresql-platform.mdx @@ -0,0 +1,12 @@ +Fill in the following fields: + +- **Name** (_required_): A unique name for this connector. +- **Host** (_required_): The host name of the target PostgreSQL instance. +- **DB Name** (_required_): The name of the target database on the instance. +- **Port** (_required_): The port number on the instance. +- **Username** (_required_): The name of the target user with the appropriate access to the instance. +- **Password** (_required_): The password for the user. +- **Table Name** (_required_): The name of the target table in the database. +- **Batch Size**: The maximum number of rows to transmit at a time. The default is `100` if not otherwise specified. +- **ID Column** (_required_, source connector only): The name of the ID column in the table. +- **Columns** (_required_, source connector only): A comma separated list of column to process (including the specified **ID Column** column). The default is all columns if not otherwise specified. \ No newline at end of file diff --git a/snippets/general-shared-text/postgresql.mdx b/snippets/general-shared-text/postgresql.mdx index ed03e2da..97827d66 100644 --- a/snippets/general-shared-text/postgresql.mdx +++ b/snippets/general-shared-text/postgresql.mdx @@ -1,3 +1,6 @@ +- For the [Unstructured Platform](/platform/overview), local PostgreSQL installations are not supported. +- For [Unstructured Ingest](/ingestion/overview), local and non-local PostgreSQL installations are supported. + The following video shows for example how to get these settings by using [Amazon RDS for PostgreSQL](https://aws.amazon.com/rds/postgresql/): - A PostgreSQL instance. [Install PostgreSQL](https://www.postgresql.org/docs/current/tutorial-install.html). -- The host name and port number for the instance. These values are in the `postgresql.conf` file's `listen_addresses` and `port` settings. This file should be on the same machine as the instance. These values might also already be set as environment variables named `PGHOST` and `PGPORT` on the same machine as the instance. -- A database in the instance. [Create a database](https://www.postgresql.org/docs/current/tutorial-createdb.html). -- A table in the database. [Create a table](https://www.postgresql.org/docs/current/tutorial-table.html). +- The host name and port number for the instance. + + - For Amazon RDS for PostgreSQL, learn how to [get the host name and port number](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_ConnectToPostgreSQLInstance.html#postgresql-endpoint). + - For local PostgreSQL installations, these values are in the `postgresql.conf` file's `listen_addresses` and `port` settings. This file should be on the same machine as the instance. These values might also already be set as environment variables named `PGHOST` and `PGPORT` on the same machine as the instance. + - For other installation types, see your PostgreSQL provider's documentation. + +- A database in the instance. + + - For Amazon RDS for PostgreSQL, the default database name is `postgres` unless a custom database name was specified during the instance creation process. + - For local PostgreSQL installations, learn how to [create a database](https://www.postgresql.org/docs/current/tutorial-createdb.html). + - For other installation types, see your PostgreSQL provider's documentation. + +- A table in the database. Learn how to [create a table](https://www.postgresql.org/docs/current/tutorial-table.html). The table's schema must match the schema of the documents that Unstructured produces. Unstructured cannot provide a schema that is guaranteed to work in all @@ -27,6 +40,7 @@ allowfullscreen CREATE TABLE elements ( id UUID PRIMARY KEY, element_id VARCHAR, + record_id TEXT, text TEXT, embeddings DECIMAL [], parent_id VARCHAR, @@ -42,8 +56,9 @@ allowfullscreen CREATE TABLE elements ( id UUID PRIMARY KEY, element_id VARCHAR, + record_id TEXT, text TEXT, - embeddings vector(384), + embeddings vector(3072), parent_id VARCHAR, page_number INTEGER, is_continuation BOOLEAN, @@ -58,6 +73,14 @@ allowfullscreen - [CREATE TABLE](https://github.com/pgvector/pgvector) for PostrgreSQL with pgvector - [Unstructured document elements and metadata](/api-reference/api-services/document-elements) -- A user in the database, and a password for the user. [Create a user](https://www.postgresql.org/docs/current/sql-createuser.html). -- Database access for the user. [Give database access to a user](https://www.postgresql.org/docs/current/sql-grant.html). +- A user in the database, and a password for the user. + + - For Amazon RDS for PostgreSQL, learn how to [create a user](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.PostgreSQL.CommonDBATasks.Roles.html). + - For local PostgreSQL installations, learn how to [create a user](https://www.postgresql.org/docs/current/sql-createuser.html). + - For other installation types, see your PostgreSQL provider's documentation. + +- Database access for the user. + - For Amazon RDS for PostgreSQL, learn how to [control user access](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.PostgreSQL.CommonDBATasks.Access.html). + - For local PostgreSQL installations, learn how to [give database access to a user](https://www.postgresql.org/docs/current/sql-grant.html). + - For other installation types, see your PostgreSQL provider's documentation. \ No newline at end of file From 0dec485c90f44307a3f028394117ad6d6039cfcb Mon Sep 17 00:00:00 2001 From: Paul Cornell Date: Thu, 19 Dec 2024 10:31:53 -0800 Subject: [PATCH 2/4] Added PostgreSQL source connector to Platform API --- mint.json | 1 + platform/api/sources/overview.mdx | 1 + platform/api/sources/postgresql.mdx | 30 +++++++++++++++++++ .../postgresql_rest_change.mdx | 2 +- .../postgresql_rest_create.mdx | 2 +- .../postgresql-api-placeholders.mdx | 4 ++- .../postgresql-platform.mdx | 2 +- .../postgresql_rest_change.mdx | 24 +++++++++++++++ .../postgresql_rest_create.mdx | 26 ++++++++++++++++ 9 files changed, 88 insertions(+), 4 deletions(-) create mode 100644 platform/api/sources/postgresql.mdx create mode 100644 snippets/source_connectors/postgresql_rest_change.mdx create mode 100644 snippets/source_connectors/postgresql_rest_create.mdx diff --git a/mint.json b/mint.json index afb2ff79..b37c36fd 100644 --- a/mint.json +++ b/mint.json @@ -529,6 +529,7 @@ "platform/api/sources/mongodb", "platform/api/sources/onedrive", "platform/api/sources/outlook", + "platform/api/sources/postgresql", "platform/api/sources/s3", "platform/api/sources/salesforce", "platform/api/sources/sharepoint" diff --git a/platform/api/sources/overview.mdx b/platform/api/sources/overview.mdx index 917f10b3..c105a54a 100644 --- a/platform/api/sources/overview.mdx +++ b/platform/api/sources/overview.mdx @@ -24,6 +24,7 @@ For the list of specific settings, see: - [MongoDB](/platform/api/sources/mongodb) (`source_type=mongodb`) - [OneDrive](/platform/api/sources/onedrive) (`source_type=onedrive`) - [Outlook](/platform/api/sources/outlook) (`source_type=outlook`) +- [PostgreSQL](/platform/api/sources/postgresql) (`source_type=postgres`) - [S3](/platform/api/sources/s3) (`source_type=s3`) - [Salesforce](/platform/api/sources/salesforce) (`source_type=salesforce`) - [SharePoint](/platform/api/sources/sharepoint) (`source_type=sharepoint`) diff --git a/platform/api/sources/postgresql.mdx b/platform/api/sources/postgresql.mdx new file mode 100644 index 00000000..40caacdd --- /dev/null +++ b/platform/api/sources/postgresql.mdx @@ -0,0 +1,30 @@ +--- +title: PostgreSQL +--- + +Ingest your files into Unstructured from PostgreSQL. + +The requirements are as follows. + +import PostgreSQLPrerequisites from '/snippets/general-shared-text/postgresql.mdx'; + + + +To create or change an PostgreSQL source connector, see the following examples. + +import PostgreSQLAPIRESTCreate from '/snippets/source_connectors/postgresql_rest_create.mdx'; +import PostgreSQLAPIRESTChange from '/snippets/source_connectors/postgresql_rest_change.mdx'; + + + + + + +Replace the preceding placeholders as follows: + +import PostgreSQLAPIPlaceholders from '/snippets/general-shared-text/postgresql-api-placeholders.mdx'; + + + +To change a connector, replace `` with the source connector's unique ID. +To get this ID, see [List source connectors](/platform/api/overview#list-source-connectors). \ No newline at end of file diff --git a/snippets/destination_connectors/postgresql_rest_change.mdx b/snippets/destination_connectors/postgresql_rest_change.mdx index a8c2141c..9a841d86 100644 --- a/snippets/destination_connectors/postgresql_rest_change.mdx +++ b/snippets/destination_connectors/postgresql_rest_change.mdx @@ -13,7 +13,7 @@ curl --request 'PUT' --location \ "username": "", "password": "", "table_name": "", - "batch_size": "" + "batch_size": } }' ``` \ No newline at end of file diff --git a/snippets/destination_connectors/postgresql_rest_create.mdx b/snippets/destination_connectors/postgresql_rest_create.mdx index 46c1d070..fd5c1960 100644 --- a/snippets/destination_connectors/postgresql_rest_create.mdx +++ b/snippets/destination_connectors/postgresql_rest_create.mdx @@ -15,7 +15,7 @@ curl --request 'POST' --location \ "username": "", "password": "", "table_name": "", - "batch_size": "" + "batch_size": } }' ``` \ No newline at end of file diff --git a/snippets/general-shared-text/postgresql-api-placeholders.mdx b/snippets/general-shared-text/postgresql-api-placeholders.mdx index 8dc7c998..d6fedb4e 100644 --- a/snippets/general-shared-text/postgresql-api-placeholders.mdx +++ b/snippets/general-shared-text/postgresql-api-placeholders.mdx @@ -5,4 +5,6 @@ - `` (required) - The username. - `` (required) - The user's password. - `` (required) - The name of the table in the database. -- `` - The maximum number of rows to transmit at a time. The default is `100` if not otherwise specified. \ No newline at end of file +- `` - The maximum number of rows to transmit at a time. The default is `100` if not otherwise specified. +- `` (required, source connector only) - The name of the ID column in the table. +- For `fields` (source connector only), set one or more `` values, with each value representing the name of a column to process (including the specified `` column). The default is all columns if not otherwise specified. \ No newline at end of file diff --git a/snippets/general-shared-text/postgresql-platform.mdx b/snippets/general-shared-text/postgresql-platform.mdx index 90ffe96e..f8b1f719 100644 --- a/snippets/general-shared-text/postgresql-platform.mdx +++ b/snippets/general-shared-text/postgresql-platform.mdx @@ -9,4 +9,4 @@ Fill in the following fields: - **Table Name** (_required_): The name of the target table in the database. - **Batch Size**: The maximum number of rows to transmit at a time. The default is `100` if not otherwise specified. - **ID Column** (_required_, source connector only): The name of the ID column in the table. -- **Columns** (_required_, source connector only): A comma separated list of column to process (including the specified **ID Column** column). The default is all columns if not otherwise specified. \ No newline at end of file +- **Columns** (_required_, source connector only): A comma separated list of column names to process (including the specified **ID Column** column). The default is all columns if not otherwise specified. \ No newline at end of file diff --git a/snippets/source_connectors/postgresql_rest_change.mdx b/snippets/source_connectors/postgresql_rest_change.mdx new file mode 100644 index 00000000..331eaa4a --- /dev/null +++ b/snippets/source_connectors/postgresql_rest_change.mdx @@ -0,0 +1,24 @@ +```bash REST (Change) +curl --request 'PUT' --location \ +"$UNSTRUCTURED_API_URL/destinations" \ +--header 'accept: application/json' \ +--header "unstructured-api-key: $UNSTRUCTURED_API_KEY" \ +--header 'content-type: application/json' \ +--data \ +'{ + "config": { + "host": "", + "database": "", + "port": "", + "username": "", + "password": "", + "table_name": "", + "batch_size": , + "id_column": "", + "fields": [ + "", + "" + ] + } +}' +``` \ No newline at end of file diff --git a/snippets/source_connectors/postgresql_rest_create.mdx b/snippets/source_connectors/postgresql_rest_create.mdx new file mode 100644 index 00000000..7562cc84 --- /dev/null +++ b/snippets/source_connectors/postgresql_rest_create.mdx @@ -0,0 +1,26 @@ +```bash REST (Create) +curl --request 'POST' --location \ +"$UNSTRUCTURED_API_URL/destinations" \ +--header 'accept: application/json' \ +--header "unstructured-api-key: $UNSTRUCTURED_API_KEY" \ +--header 'content-type: application/json' \ +--data \ +'{ + "name": "", + "type": "postgres", + "config": { + "host": "", + "database": "", + "port": "", + "username": "", + "password": "", + "table_name": "", + "batch_size": , + "id_column": "", + "fields": [ + "", + "" + ] + } +}' +``` \ No newline at end of file From 187bbcc0358b8764e3019a42122564c9241ee828 Mon Sep 17 00:00:00 2001 From: Paul Cornell Date: Thu, 19 Dec 2024 11:26:41 -0800 Subject: [PATCH 3/4] Hide Couchbase and PostgreSQL source connectors from Platform --- mint.json | 4 ---- platform/api/sources/overview.mdx | 2 -- platform/sources/overview.mdx | 2 -- 3 files changed, 8 deletions(-) diff --git a/mint.json b/mint.json index b37c36fd..0e633107 100644 --- a/mint.json +++ b/mint.json @@ -472,7 +472,6 @@ "platform/sources/overview", "platform/sources/azure-blob-storage", "platform/sources/confluence", - "platform/sources/couchbase", "platform/sources/databricks-volumes", "platform/sources/dropbox", "platform/sources/elasticsearch", @@ -481,7 +480,6 @@ "platform/sources/mongodb", "platform/sources/onedrive", "platform/sources/outlook", - "platform/sources/postgresql", "platform/sources/s3", "platform/sources/salesforce", "platform/sources/sharepoint" @@ -520,7 +518,6 @@ "platform/api/sources/overview", "platform/api/sources/azure-blob-storage", "platform/api/sources/confluence", - "platform/api/sources/couchbase", "platform/api/sources/databricks-volumes", "platform/api/sources/dropbox", "platform/api/sources/elasticsearch", @@ -529,7 +526,6 @@ "platform/api/sources/mongodb", "platform/api/sources/onedrive", "platform/api/sources/outlook", - "platform/api/sources/postgresql", "platform/api/sources/s3", "platform/api/sources/salesforce", "platform/api/sources/sharepoint" diff --git a/platform/api/sources/overview.mdx b/platform/api/sources/overview.mdx index c105a54a..c52b6e30 100644 --- a/platform/api/sources/overview.mdx +++ b/platform/api/sources/overview.mdx @@ -14,7 +14,6 @@ To create a source connector, you must also provide a request body that contains For the list of specific settings, see: - [Azure](/platform/api/sources/azure-blob-storage) (`source_type=azure`) -- [Couchbase](/platform/api/sources/couchbase) (`source_type=couchbase`) - [Confluence](/platform/api/sources/confluence) (`source_type=confluence`) - [Databricks Volumes](/platform/api/sources/databricks-volumes) (`source_type=databricks_volumes`) - [Dropbox](/platform/api/sources/dropbox) (`source_type=dropbox`) @@ -24,7 +23,6 @@ For the list of specific settings, see: - [MongoDB](/platform/api/sources/mongodb) (`source_type=mongodb`) - [OneDrive](/platform/api/sources/onedrive) (`source_type=onedrive`) - [Outlook](/platform/api/sources/outlook) (`source_type=outlook`) -- [PostgreSQL](/platform/api/sources/postgresql) (`source_type=postgres`) - [S3](/platform/api/sources/s3) (`source_type=s3`) - [Salesforce](/platform/api/sources/salesforce) (`source_type=salesforce`) - [SharePoint](/platform/api/sources/sharepoint) (`source_type=sharepoint`) diff --git a/platform/sources/overview.mdx b/platform/sources/overview.mdx index f84743ef..b705718c 100644 --- a/platform/sources/overview.mdx +++ b/platform/sources/overview.mdx @@ -20,7 +20,6 @@ To create a source connector: - [Azure](/platform/sources/azure-blob-storage) - [Confluence](/platform/sources/confluence) - - [Couchbase](/platform/sources/couchbase) - [Databricks Volumes](/platform/sources/databricks-volumes) - [Dropbox](/platform/sources/dropbox) - [Elasticsearch](/platform/sources/elasticsearch) @@ -29,7 +28,6 @@ To create a source connector: - [MongoDB](/platform/sources/mongodb) - [OneDrive](/platform/sources/onedrive) - [Outlook](/platform/sources/outlook) - - [PostgreSQL](/platform/sources/postgresql) - [S3](/platform/sources/s3) - [Salesforce](/platform/sources/salesforce) - [SharePoint](/platform/source/sharepoint) From 0ffa025ef01f52c81aa015597996737df1308566 Mon Sep 17 00:00:00 2001 From: Paul Cornell Date: Thu, 19 Dec 2024 11:29:23 -0800 Subject: [PATCH 4/4] Hide Couchbase and PostgreSQL source connectors from Platform, part 2 --- platform/connectors.mdx | 2 -- 1 file changed, 2 deletions(-) diff --git a/platform/connectors.mdx b/platform/connectors.mdx index 8167c424..669749df 100644 --- a/platform/connectors.mdx +++ b/platform/connectors.mdx @@ -13,7 +13,6 @@ The Unstructured Platform supports connecting to the following source and destin - [Azure](/platform/sources/azure-blob-storage) - [Confluence](/platform/sources/confluence) -- [Couchbase](/platform/sources/couchbase) - [Databricks Volumes](/platform/sources/databricks-volumes) - [Dropbox](/platform/sources/dropbox) - [Elasticsearch](/platform/sources/elasticsearch) @@ -22,7 +21,6 @@ The Unstructured Platform supports connecting to the following source and destin - [MongoDB](/platform/sources/mongodb) - [OneDrive](/platform/sources/onedrive) - [Outlook](/platform/sources/outlook) -- [PostgreSQL](/platform/sources/postgresql) - [S3](/platform/sources/s3) - [Salesforce](/platform/sources/salesforce) - [SharePoint](/platform/sources/sharepoint)