Compartir a través de


Copia de datos de PostgreSQL con Azure Data Factory o Synapse Analytics (heredado)

SE APLICA A: Azure Data Factory Azure Synapse Analytics

Sugerencia

Pruebe Data Factory en Microsoft Fabric, una solución de análisis todo en uno para empresas. Microsoft Fabric abarca todo, desde el movimiento de datos hasta la ciencia de datos, el análisis en tiempo real, la inteligencia empresarial y los informes. Obtenga información sobre cómo iniciar una nueva evaluación gratuita.

En este artículo se resume el uso de la actividad de copia en canalizaciones de Azure Data Factory y Synapse Analytics para copiar datos de una base de datos PostgreSQL. El documento se basa en el artículo de introducción a la actividad de copia que describe información general de la actividad de copia.

Importante

El conector de PostgreSQL V2 proporciona compatibilidad nativa mejorada con PostgreSQL. Si usa el conector de PostgreSQL V1 en la solución, actualice el conector de PostgreSQL, ya que V1 se encuentra en Fase de finalización del soporte técnico. Consulte esta sección para obtener más información sobre la diferencia entre V2 y V1.

Funcionalidades admitidas

El conector PostgreSQL es compatible para las siguientes funcionalidades:

Funcionalidades admitidas IR
Actividad de copia (origen/-) ① ②
Actividad de búsqueda ① ②

① Azure Integration Runtime ② Entorno de ejecución de integración autohospedado

Consulte la tabla de almacenes de datos compatibles para ver una lista de almacenes de datos que la actividad de copia admite como orígenes o receptores.

En concreto, este conector PostgreSQL es compatible con la versión 7.4 y posterior de PostgreSQL.

Prerrequisitos

Si el almacén de datos se encuentra en una red local, una red virtual de Azure o una nube privada virtual de Amazon, debe configurar un entorno de ejecución de integración autohospedado para conectarse a él.

Si el almacén de datos es un servicio de datos en la nube administrado, puede usar Azure Integration Runtime. Si el acceso está restringido a las direcciones IP que están aprobadas en las reglas de firewall, puede agregar direcciones IP de Azure Integration Runtime a la lista de permitidos.

También puede usar la característica del entorno de ejecución de integración de red virtual administrada de Azure Data Factory para acceder a la red local sin instalar ni configurar un entorno de ejecución de integración autohospedado.

Consulte Estrategias de acceso a datos para más información sobre los mecanismos de seguridad de red y las opciones que admite Data Factory.

El entorno de Integration Runtime proporciona un controlador de PostgreSQL integrado a partir de la versión 3.7, por lo tanto, no es necesario que instale uno manualmente.

Introducción

Para realizar la actividad de copia con una canalización, puede usar una de los siguientes herramientas o SDK:

Creación de un servicio vinculado a PostgreSQL mediante la interfaz de usuario

Siga estos pasos para crear un servicio vinculado a PostgreSQL en la interfaz de usuario de Azure Portal.

  1. Vaya a la pestaña Administrar del área de trabajo de Azure Data Factory o Synapse y seleccione Servicios vinculados; luego haga clic en Nuevo:

  2. Busque PostgreSQL y seleccione el conector de PostgreSQL.

    Captura de pantalla que muestra Seleccionar el conector de PostgreSQL.

  3. Configure los detalles del servicio, pruebe la conexión y cree el nuevo servicio vinculado.

    Captura de pantalla en la que se muestra cómo configurar un servicio vinculado a PostgreSQL.

Detalles de configuración del conector

Las secciones siguientes proporcionan detalles sobre las propiedades que se usan para definir entidades de Data Factory específicas del conector PostgreSQL.

Propiedades del servicio vinculado

Las siguientes propiedades son compatibles con el servicio vinculado PostgreSQL:

Propiedad Descripción Obligatorio
type La propiedad type debe establecerse en: PostgreSql
connectionString Cadena de conexión de ODBC para conectarse a Azure Database for PostgreSQL.
También puede colocar la contraseña en Azure Key Vault y extraer la configuración de password de la cadena de conexión. Consulte los siguientes ejemplos y el artículo Almacenamiento de credenciales en Azure Key Vault con información detallada.
connectVia El entorno Integration Runtime que se usará para conectarse al almacén de datos. Obtenga más información en la sección Requisitos previos. Si no se especifica, se usará Azure Integration Runtime. No

Una cadena de conexión típica es Server=<server>;Database=<database>;Port=<port>;UID=<username>;Password=<Password>. Más propiedades que puede establecer para su caso:

Propiedad Descripción Opciones Obligatorio
EncryptionMethod (EM) Método que usa el controlador para cifrar los datos enviados entre el controlador y el servidor de bases de datos. Por ejemplo, EncryptionMethod=<0/1/6>; 0 (sin cifrado) (valor predeterminado) / 1 (SSL) / 6 (RequestSSL) No
ValidateServerCertificate (VSC) Determina si el controlador valida el certificado que envía el servidor de bases de datos cuando está habilitado el cifrado SSL (método de cifrado = 1). Por ejemplo, ValidateServerCertificate=<0/1>; 0 (deshabilitado) (valor predeterminado) / 1 (habilitado) No

Nota

Para tener la comprobación completa de SSL a través de la conexión ODBC al usar el Integration Runtime autohospedado, debe usar una conexión de tipo ODBC en lugar del conector postgreSQL explícitamente y completar la siguiente configuración:

  1. Configure el DSN en cualquier servidor SHIR.
  2. Coloque el certificado adecuado de PostgreSQL en C:\Windows\ServiceProfiles\DIAHostService\AppData\Roaming\postgresql\root.crt en los servidores SHIR. Aquí es donde el controlador ODBC busca > para el certificado SSL con el objetivo de comprobar cuándo se conecta a la base de datos.
  3. En la conexión de la factoría de datos, use una conexión de tipo ODBC, con la cadena de conexión que apunta al DSN que creó en los servidores SHIR.

Ejemplo:

{
    "name": "PostgreSqlLinkedService",
    "properties": {
        "type": "PostgreSql",
        "typeProperties": {
            "connectionString": "Server=<server>;Database=<database>;Port=<port>;UID=<username>;Password=<Password>"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Ejemplo: Almacenamiento de la contraseña en Azure Key Vault

{
    "name": "PostgreSqlLinkedService",
    "properties": {
        "type": "PostgreSql",
        "typeProperties": {
            "connectionString": "Server=<server>;Database=<database>;Port=<port>;UID=<username>;",
            "password": { 
                "type": "AzureKeyVaultSecret", 
                "store": { 
                    "referenceName": "<Azure Key Vault linked service name>", 
                    "type": "LinkedServiceReference" 
                }, 
                "secretName": "<secretName>" 
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Si usa el servicio vinculado PostgreSQL con la siguiente carga, todavía se admite tal cual, aunque se aconseja usar la versión nueva.

Carga anterior:

{
    "name": "PostgreSqlLinkedService",
    "properties": {
        "type": "PostgreSql",
        "typeProperties": {
            "server": "<server>",
            "database": "<database>",
            "username": "<username>",
            "password": {
                "type": "SecureString",
                "value": "<password>"
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Propiedades del conjunto de datos

Si desea ver una lista completa de las secciones y propiedades disponibles para definir conjuntos de datos, consulte el artículo sobre conjuntos de datos. En esta sección se proporciona una lista de las propiedades que admite el conjunto de datos de PostgreSQL.

Para copiar datos de PostgreSQL, se admiten las propiedades siguientes:

Propiedad Descripción Obligatorio
type La propiedad type del conjunto de datos debe establecerse en: PostgreSqlTable
esquema Nombre del esquema. No (si se especifica "query" en el origen de la actividad)
table Nombre de la tabla. No (si se especifica "query" en el origen de la actividad)
tableName Nombre de la tabla con el esquema. Esta propiedad permite la compatibilidad con versiones anteriores. Use schema y table para la carga de trabajo nueva. No (si se especifica "query" en el origen de la actividad)

Ejemplo

{
    "name": "PostgreSQLDataset",
    "properties":
    {
        "type": "PostgreSqlTable",
        "typeProperties": {},
        "schema": [],
        "linkedServiceName": {
            "referenceName": "<PostgreSQL linked service name>",
            "type": "LinkedServiceReference"
        }
    }
}

Si estaba usando un conjunto de datos de tipo RelationalTable, todavía se admite tal cual, aunque se aconseja usar el nuevo en el futuro.

Propiedades de la actividad de copia

Si desea ver una lista completa de las secciones y propiedades disponibles para definir actividades, consulte el artículo sobre canalizaciones. En esta sección se proporciona una lista de las propiedades que admite el origen de PostgreSQL.

PostgreSQL como origen

Para copiar datos desde PostgreSQL, en la sección source de la actividad de copia se admiten las propiedades siguientes:

Propiedad Descripción Obligatorio
type La propiedad type del origen de la actividad de copia debe establecerse en: PostgreSqlSource
Query Use la consulta SQL personalizada para leer los datos. Por ejemplo: "query": "SELECT * FROM \"MySchema\".\"MyTable\"". No (si se especifica "tableName" en el conjunto de datos)

Nota

Los nombres de esquema y tabla distinguen mayúsculas de minúsculas. Incluya los nombres entre comillas dobles "" en la consulta.

Ejemplo:

"activities":[
    {
        "name": "CopyFromPostgreSQL",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<PostgreSQL input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "PostgreSqlSource",
                "query": "SELECT * FROM \"MySchema\".\"MyTable\""
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

Si estaba usando un origen de tipo RelationalSource, todavía se admite tal cual, aunque se aconseja usar el nuevo en el futuro.

Propiedades de la actividad de búsqueda

Para obtener información detallada sobre las propiedades, consulte Actividad de búsqueda.

Para obtener una lista de almacenes de datos que la actividad de copia admite como orígenes y receptores, vea Almacenes de datos que se admiten.