Azure Data Factory 및 Synapse Analytics를 사용하여 Azure Database for PostgreSQL에서 데이터 복사 및 변환
적용 대상: Azure Data Factory Azure Synapse Analytics
팁
기업용 올인원 분석 솔루션인 Microsoft Fabric의 Data Factory를 사용해 보세요. Microsoft Fabric은 데이터 이동부터 데이터 과학, 실시간 분석, 비즈니스 인텔리전스 및 보고에 이르기까지 모든 것을 다룹니다. 무료로 새 평가판을 시작하는 방법을 알아봅니다!
이 문서에서는 Azure Data Factory 및 Synapse Analytics 파이프라인에서 복사 작업을 사용하여 Azure Database for PostgreSQL 간에 데이터를 복사하고 Data Flow를 사용하여 Azure Database for PostgreSQL에서 데이터를 변환하는 방법을 간략하게 설명합니다. 자세한 내용은 Azure Data Factory 및 Synapse Analytics의 소개 문서를 참조하세요.
이 커넥터는 Azure Database for PostgreSQL 서비스를 전문으로 지원합니다. 온-프레미스 또는 클라우드에 있는 일반 PostgreSQL 데이터베이스에서 데이터를 복사하려면 PostgreSQL 커넥터를 사용하세요.
지원되는 기능
이 Azure Database for PostgreSQL 커넥터는 다음 기능에 대해 지원됩니다.
지원되는 기능 | IR | 관리형 프라이빗 엔드포인트 |
---|---|---|
복사 작업(원본/싱크) | (1) (2) | ✓ |
매핑 데이터 흐름(원본/싱크) | (1) | ✓ |
조회 작업 | (1) (2) | ✓ |
① Azure 통합 런타임 ② 자체 호스팅 통합 런타임
세 가지 작업은 모든 Azure Database for PostgreSQL 배포 옵션에서 작동합니다.
시작하기
파이프라인에 복사 작업을 수행하려면 다음 도구 또는 SDK 중 하나를 사용하면 됩니다.
UI를 사용하여 Azure Database for PostgreSQL에 연결된 서비스 만들기
다음 단계를 사용하여 Azure Portal UI에서 Azure Database for PostgreSQL에 연결된 서비스를 만듭니다.
Azure Data Factory 또는 Synapse 작업 영역에서 관리 탭으로 이동하여 연결된 서비스를 선택하고 새로 만들기를 클릭합니다.
PostgreSQL을 검색하고 Azure Database for PostgreSQL 커넥터를 선택합니다.
서비스 세부 정보를 구성하고, 연결을 테스트하고, 새로운 연결된 서비스를 만듭니다.
커넥터 구성 세부 정보
다음 섹션에서는 Azure Database for PostgreSQL 커넥터에 한정된 Data Factory 엔터티를 정의하는 데 사용되는 속성에 대해 자세히 설명합니다.
연결된 서비스 속성
다음은 Azure Database for PostgreSQL에 연결된 서비스에 대해 지원되는 속성입니다.
속성 | 설명 | 필수 |
---|---|---|
type | type 속성은 AzurePostgreSql로 설정해야 합니다. | 예 |
connectionString | Azure Database for PostgreSQL에 연결하는 ODBC 연결 문자열입니다. Azure Key Vault에 암호를 넣고 연결 문자열에서 password 구성을 끌어올 수도 있습니다. 자세한 내용은 다음 샘플 및 Azure Key Vault에 자격 증명 저장을 참조하세요. |
예 |
connectVia | 이 속성은 데이터 저장소에 연결하는 데 사용할 통합 런타임을 나타냅니다. Azure Integration Runtime 또는 자체 호스팅 Integration Runtime을 사용할 수 있습니다(데이터 저장소가 프라이빗 네트워크에 있는 경우). 지정하지 않으면 기본 Azure Integration Runtime을 사용합니다. | 아니요 |
일반적인 연결 문자열은 Server=<server>.postgres.database.azure.com;Database=<database>;Port=<port>;UID=<username>;Password=<Password>
입니다. 사례에 따라 설정할 수 있는 추가 속성은 다음과 같습니다.
속성 | 설명 | Options | Required |
---|---|---|---|
EncryptionMethod(EM) | 드라이버와 데이터베이스 서버 간에 전송되는 데이터를 암호화하기 위해 드라이버에서 사용하는 메서드입니다. 예를 들어 EncryptionMethod=<0/1/6>; |
0(암호화 없음)(기본값) / 1(SSL) / 6(RequestSSL) | 아니요 |
ValidateServerCertificate(VSC) | SSL 암호화를 사용할 때(암호화 메서드=1) 데이터베이스 서버에서 보내는 인증서의 유효성을 드라이버가 검사하는지 여부를 결정합니다. 예를 들어 ValidateServerCertificate=<0/1>; |
0(사용 안 함)(기본값) / 1(사용) | 아니요 |
예제:
{
"name": "AzurePostgreSqlLinkedService",
"properties": {
"type": "AzurePostgreSql",
"typeProperties": {
"connectionString": "Server=<server>.postgres.database.azure.com;Database=<database>;Port=<port>;UID=<username>;Password=<Password>"
}
}
}
예제:
Azure Key Vault에 암호 저장
{
"name": "AzurePostgreSqlLinkedService",
"properties": {
"type": "AzurePostgreSql",
"typeProperties": {
"connectionString": "Server=<server>.postgres.database.azure.com;Database=<database>;Port=<port>;UID=<username>;",
"password": {
"type": "AzureKeyVaultSecret",
"store": {
"referenceName": "<Azure Key Vault linked service name>",
"type": "LinkedServiceReference"
},
"secretName": "<secretName>"
}
}
}
}
데이터 세트 속성
데이터 세트 정의에 사용할 수 있는 섹션 및 속성의 전체 목록은 데이터 세트를 참조하세요. 이 섹션에서는 데이터 세트에서 Azure Database for PostgreSQL이 지원하는 속성 목록을 제공합니다.
Azure Database for PostgreSQL에서 데이터를 복사하려면 데이터 세트의 type 속성을 AzurePostgreSqlTable로 설정합니다. 다음과 같은 속성이 지원됩니다.
속성 | 설명 | 필수 |
---|---|---|
type | 데이터 세트의 type 속성은 AzurePostgreSqlTable로 설정해야 합니다. | 예 |
tableName | 테이블 이름 | 아니요(작업 원본에서 "query"가 지정된 경우) |
예제:
{
"name": "AzurePostgreSqlDataset",
"properties": {
"type": "AzurePostgreSqlTable",
"linkedServiceName": {
"referenceName": "<AzurePostgreSql linked service name>",
"type": "LinkedServiceReference"
},
"typeProperties": {}
}
}
복사 작업 속성
작업 정의에 사용할 수 있는 섹션 및 속성의 전체 목록은 파이프라인 및 작업을 참조하세요. 이 섹션에서는 Azure Database for PostgreSQL 원본에서 지원하는 속성 목록을 제공합니다.
Azure Database for PostgreSQL을 원본으로
Azure Database for PostgreSQL에서 데이터를 복사하려면 복사 작업의 원본 형식을 AzurePostgreSqlSource로 설정합니다. 복사 작업 source 섹션에서 다음 속성이 지원됩니다.
속성 | 설명 | 필수 |
---|---|---|
type | 복사 작업 원본의 type 속성은 AzurePostgreSqlSource로 설정해야 합니다. | 예 |
query | 사용자 지정 SQL 쿼리를 사용하여 데이터를 읽습니다. 예를 들어 SELECT * FROM mytable 또는 SELECT * FROM "MyTable" 입니다. PostgreSQL에서 엔터티 이름은 따옴표로 묶지 않은 경우 대/소문자를 구분하지 않는 것으로 취급됩니다. |
아니요(데이터 세트에서 tableName 속성이 지정된 경우) |
queryTimeout | 명령 실행 시도를 종료하고 오류를 생성하기 전의 대기 시간(기본값은 120분)입니다. 이 속성에 대해 매개 변수를 설정한 경우 허용되는 값은 시간 범위(예: "02:00:00"(120분)입니다. 자세한 내용은 CommandTimeout을 참조하세요. | 아니요 |
partitionOptions | Azure SQL Database에서 데이터를 로드하는 데 사용되는 데이터 분할 옵션을 지정합니다. 허용되는 값은 None(기본값), PhysicalPartitionsOfTable 및 DynamicRange입니다. 파티션 옵션을 사용하도록 설정하는 경우 (즉, None 은 안 됨), Azure SQL Database에서 데이터를 동시에 로드하는 병렬 처리 수준이 복사 작업에서 parallelCopies 설정에 의해 제어됩니다. |
아니요 |
partitionSettings | 데이터 분할에 대한 설정 그룹을 지정합니다. 파티션 옵션이 None 이 아닌 경우 적용됩니다. |
아니요 |
partitionSettings 에서: |
||
partitionNames | 복사해야 하는 물리적 파티션 목록입니다. 파티션 옵션이 PhysicalPartitionsOfTable 인 경우에 적용됩니다. 쿼리를 사용하여 원본 데이터를 검색하는 경우 WHERE 절에서 ?AdfTabularPartitionName 를 후크합니다. 예제는 Azure Database for PostgreSQL의 병렬 복사 섹션을 참조하세요. |
아니요 |
partitionColumnName | 병렬 복사를 위해 범위 분할에서 사용할 원본 열의 이름을 정수, 날짜 또는 날짜/시간 형식(int , smallint , bigint , date , timestamp without time zone , timestamp with time zone 또는 time without time zone )으로 지정합니다. 지정하지 않으면 테이블의 기본 키가 자동으로 검색되어 파티션 열로 사용됩니다.파티션 옵션이 DynamicRange 인 경우에 적용됩니다. 쿼리를 사용하여 원본 데이터를 검색하는 경우 WHERE 절에서 ?AdfRangePartitionColumnName 를 후크합니다. 예제는 Azure Database for PostgreSQL의 병렬 복사 섹션을 참조하세요. |
아니요 |
partitionUpperBound | 데이터를 복사할 파티션 열의 최댓값입니다. 파티션 옵션이 DynamicRange 인 경우에 적용됩니다. 쿼리를 사용하여 원본 데이터를 검색하는 경우 WHERE 절에서 ?AdfRangePartitionUpbound 를 후크합니다. 예제는 Azure Database for PostgreSQL의 병렬 복사 섹션을 참조하세요. |
아니요 |
partitionLowerBound | 데이터를 복사할 파티션 열의 최솟값입니다. 파티션 옵션이 DynamicRange 인 경우에 적용됩니다. 쿼리를 사용하여 원본 데이터를 검색하는 경우 WHERE 절에서 ?AdfRangePartitionLowbound 를 후크합니다. 예제는 Azure Database for PostgreSQL의 병렬 복사 섹션을 참조하세요. |
아니요 |
예제:
"activities":[
{
"name": "CopyFromAzurePostgreSql",
"type": "Copy",
"inputs": [
{
"referenceName": "<AzurePostgreSql input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "AzurePostgreSqlSource",
"query": "<custom query e.g. SELECT * FROM mytable>",
"queryTimeout": "00:10:00"
},
"sink": {
"type": "<sink type>"
}
}
}
]
Azure Database for PostgreSQL을 싱크로
Azure Database for PostgreSQL에 데이터를 복사하기 위해 복사 작업 싱크 섹션에서 지원되는 속성은 다음과 같습니다.
속성 | 설명 | 필수 |
---|---|---|
type | 복사 작업 싱크의 type 속성은 AzurePostgreSQLSink로 설정해야 합니다. | 예 |
preCopyScript | 각 실행 시 Azure Database for PostgreSQL에 데이터를 기록하기 전 실행할 복사 작업에 대한 SQL 쿼리를 지정합니다. 이 속성을 사용하여 미리 로드된 데이터를 정리할 수 있습니다. | 아니요 |
writeMethod | Azure Database for PostgreSQL에 데이터를 쓰기 위해 사용되는 메서드입니다. 허용되는 값: CopyCommand(기본값: 성능이 더 높음), BulkInsert |
아니요 |
writeBatchSize | 일괄 처리당 Azure Database for PostgreSQL에 로드되는 행 수입니다. 허용되는 값은 행 수를 나타내는 정수입니다. |
아니요(기본값: 1,000,000) |
writeBatchTimeout | 시간이 초과되기 전에 완료하려는 배치 삽입 작업을 위한 대기 시간입니다. 허용되는 값은 시간 범위 문자열입니다. 예를 들어 "00:30:00"(30분)입니다. |
아니요(기본값: 00:00:30) |
예제:
"activities":[
{
"name": "CopyToAzureDatabaseForPostgreSQL",
"type": "Copy",
"inputs": [
{
"referenceName": "<input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<Azure PostgreSQL output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "<source type>"
},
"sink": {
"type": "AzurePostgreSQLSink",
"preCopyScript": "<custom SQL script>",
"writeMethod": "CopyCommand",
"writeBatchSize": 1000000
}
}
}
]
Azure Database for PostgreSQL의 병렬 복사
복사 작업의 Azure Database for PostgreSQL 커넥터는 데이터를 병렬로 복사하는 기본 제공 데이터 분할을 제공합니다. 복사 작업의 원본 탭에서 데이터 분할 옵션을 찾을 수 있습니다.
분할된 복사본을 사용하도록 설정하면 복사 작업이 Azure Database for PostgreSQL 원본에 대해 병렬 쿼리를 실행하여 파티션별로 데이터를 로드합니다. 병렬 수준은 복사 작업의 parallelCopies
설정에 의해 제어됩니다. 예를 들어, parallelCopies
를 4로 설정하는 경우, 서비스는 지정된 파티션 옵션과 설정에 따라 4개의 쿼리를 동시에 생성하고 실행하며, 각 쿼리는 Azure Database for PostgreSQL에서 데이터의 일부를 검색합니다.
특히 Azure Database for PostgreSQL에서 대량의 데이터를 로드하는 경우 특별히 데이터 분할로 병렬 복사를 사용하도록 설정하는 것이 좋습니다. 다양한 시나리오에 대해 권장되는 구성은 다음과 같습니다. 파일 기반 데이터 저장소에 데이터를 복사할 때 여러 파일로 폴더에 쓰는 것이 좋습니다(폴더 이름만 지정). 이 경우 단일 파일에 쓰는 것보다 성능이 좋습니다.
시나리오 | 제안된 설정 |
---|---|
실제 파티션이 있는 대형 테이블에서 전체 로드 | 파티션 옵션: 테이블의 실제 파티션 실행하는 동안 서비스에서 실제 파티션을 자동으로 검색하여 데이터를 파티션별로 복사합니다. |
데이터 분할을 위해 물리적 파티션을 사용하지 않지만 정수 열을 사용하여 대형 테이블에서 전체 로드합니다. | 파티션 옵션: 동적 범위 파티션입니다. 파티션 열: 데이터를 분할하는 데 사용되는 열을 지정합니다. 지정하지 않으면 기본 키 열이 사용됩니다. |
사용자 지정 쿼리를 사용하여 물리적 파티션과 함께 대량의 데이터를 로드합니다. | 파티션 옵션: 테이블의 실제 파티션 쿼리: SELECT * FROM ?AdfTabularPartitionName WHERE <your_additional_where_clause> .파티션 이름: 데이터를 복사할 파티션 이름을 지정합니다. 지정하지 않으면 서비스는 PostgreSQL 데이터 세트에서 지정한 테이블의 물리적 파티션을 자동으로 검색합니다. 실행하는 동안 서비스는 ?AdfTabularPartitionName 을 실제 파티션 이름으로 바꾸고 Azure Database for PostgreSQL로 보냅니다. |
물리적 파티션이 없는 사용자 지정 쿼리를 사용하여 대량의 데이터를 로드하는 동시에 데이터 분할을 위한 정수 열을 사용합니다. | 파티션 옵션: 동적 범위 파티션입니다. 쿼리: SELECT * FROM ?AdfTabularPartitionName WHERE ?AdfRangePartitionColumnName <= ?AdfRangePartitionUpbound AND ?AdfRangePartitionColumnName >= ?AdfRangePartitionLowbound AND <your_additional_where_clause> .파티션 열: 데이터를 분할하는 데 사용되는 열을 지정합니다. 정수, 날짜 또는 날짜/시간 데이터 형식의 열에 대해 분할할 수 있습니다. 파티션 상한 및 파티션 하한: 파티션 열에 대해 필터링하려는 하한과 상한 범위 사이에서만 데이터를 검색하도록 지정합니다. 실행하는 동안 서비스는 ?AdfRangePartitionColumnName , ?AdfRangePartitionUpbound , ?AdfRangePartitionLowbound 를 각 파티션의 실제 열 이름과 값 범위로 바꾸고 Azure Database for PostgreSQL로 보냅니다. 예를 들어 파티션 열 “ID”의 하한이 1로 설정되고 상한이 80으로 설정된 경우 병렬 복사를 4로 설정하면 서비스는 4개의 파티션으로 데이터를 검색합니다. 해당 ID는 [1, 20], [21, 40], [41, 60] 및 [61, 80] 사이에 각각 있습니다. |
파티션 옵션을 사용하여 데이터를 로드하는 모범 사례:
- 데이터 기울이기를 방지하려면 고유한 열(예: 기본 키 또는 고유 키)을 분할 열로 선택합니다.
- 테이블에 기본 제공 파티션이 있는 경우 "테이블의 실제 파티션" 파티션 옵션을 사용하여 성능을 향상시킵니다.
- Azure Integration Runtime을 사용하여 데이터를 복사하는 경우 더 많은 컴퓨팅 리소스를 활용할 수 있도록 더 큰 “DIU(데이터 통합 단위)”(>4)를 설정할 수 있습니다. 여기서 적용 가능한 시나리오를 확인합니다.
- "복사 병렬 처리 수준"은 파티션 수를 제어합니다. 이 수를 너무 크게 설정하면 성능이 저하되는 경우가 있습니다. 이 수를 (DIU 또는 자체 호스팅 IR 노드 수) * (2~4)로 설정하는 것이 좋습니다.
예제: 실제 파티션이 있는 대형 테이블에서 전체 로드
"source": {
"type": "AzurePostgreSqlSource",
"partitionOption": "PhysicalPartitionsOfTable"
}
예: 동적 범위 파티션이 있는 쿼리
"source": {
"type": "AzurePostgreSqlSource",
"query": "SELECT * FROM <TableName> WHERE ?AdfDynamicRangePartitionCondition AND <your_additional_where_clause>",
"partitionOption": "DynamicRange",
"partitionSettings": {
"partitionColumnName": "<partition_column_name>",
"partitionUpperBound": "<upper_value_of_partition_column (optional) to decide the partition stride, not as data filter>",
"partitionLowerBound": "<lower_value_of_partition_column (optional) to decide the partition stride, not as data filter>"
}
}
매핑 데이터 흐름 속성
매핑 데이터 흐름에서 데이터를 변환할 때 Azure Database for PostgreSQL에서 테이블을 읽고 쓸 수 있습니다. 자세한 내용은 매핑 데이터 흐름에서 원본 변환 및 싱크 변환을 참조하세요. Azure Database for PostgreSQL 데이터 세트 또는 인라인 데이터 세트를 원본 및 싱크 형식으로 사용하도록 선택할 수 있습니다.
원본 변환
다음 표에서는 Azure Database for PostgreSQL 원본에서 지원되는 속성을 나열합니다. 이러한 속성은 원본 옵션 탭에서 편집할 수 있습니다.
이름 | 설명 | 필수 | 허용된 값 | 데이터 흐름 스크립트 속성 |
---|---|---|---|---|
테이블 | 테이블을 입력으로 선택하는 경우 데이터 흐름은 데이터 세트에 지정된 테이블에서 모든 데이터를 가져옵니다. | 아니요 | - | (인라인 데이터 세트에만 해당) tableName |
쿼리 | 쿼리를 입력으로 선택하는 경우 원본에서 데이터를 가져올 SQL 쿼리를 지정하면 데이터 세트에서 지정한 테이블이 재정의됩니다. 쿼리를 사용하면 테스트 또는 조회를 위한 행을 줄일 수 있습니다. Order By 절은 지원되지 않지만 전체 SELECT FROM 문을 설정할 수 있습니다. 사용자 정의 테이블 함수를 사용할 수도 있습니다. select * from udfGetData()는 데이터 흐름에서 사용할 수 있는 테이블을 반환하는 SQL의 UDF입니다. 쿼리 예: select * from mytable where customerId > 1000 and customerId < 2000 또는 select * from "MyTable" PostgreSQL에서 엔터티 이름은 따옴표로 묶지 않은 경우 대/소문자를 구분하지 않는 것으로 취급됩니다. |
아니요 | 문자열 | query |
스키마 이름 | 저장 프로시저를 입력으로 선택하는 경우 저장 프로시저의 스키마 이름을 지정하거나 새로 고침을 선택하여 서비스에 스키마 이름을 검색하도록 요청합니다. | 아니요 | 문자열 | schemaName |
저장 프로시저 | 저장 프로시저를 입력으로 선택하는 경우 원본 테이블에서 데이터를 읽을 저장 프로시저의 이름을 지정하거나 새로 고침을 선택하여 서비스에 프로시저 이름을 검색하도록 요청합니다. | 예(저장 프로시저를 입력으로 선택하는 경우) | 문자열 | procedureName |
프로시저 매개 변수 | 저장 프로시저를 입력으로 선택하는 경우 프로시저에 설정된 순서대로 저장 프로시저에 대한 입력 매개 변수를 지정하거나 가져오기를 선택하여 @paraName 양식을 사용하여 모든 프로시저 매개 변수를 가져옵니다. |
아니요 | 배열 | inputs |
Batch 크기 | 일괄 처리 크기를 지정하여 대량 데이터를 일괄 처리로 청크합니다. | 아니요 | 정수 | batchSize |
격리 수준 | 다음 격리 수준 중 하나를 선택합니다. - 커밋된 읽기 - 커밋되지 않은 읽기(기본값) - 반복 읽기 - 직렬화 가능 - 없음(격리 수준 무시) |
아니요 | READ_COMMITTED READ_UNCOMMITTED REPEATABLE_READ 직렬화 가능 NONE |
isolationLevel |
Azure Database for PostgreSQL 원본 스트립트 예
Azure Database for PostgreSQL을 원본 형식으로 사용하는 경우 연결된 데이터 흐름 스크립트는 다음과 같습니다.
source(allowSchemaDrift: true,
validateSchema: false,
isolationLevel: 'READ_UNCOMMITTED',
query: 'select * from mytable',
format: 'query') ~> AzurePostgreSQLSource
싱크 변환
다음 표에서는 Azure Database for PostgreSQL 싱크에서 지원되는 속성을 나열합니다. 해당 속성은 싱크 옵션 탭에서 편집할 수 있습니다.
이름 | 설명 | 필수 | 허용된 값 | 데이터 흐름 스크립트 속성 |
---|---|---|---|---|
Update 메서드 | 데이터베이스 대상에서 허용되는 작업을 지정합니다. 기본값은 삽입만 허용하는 것입니다. 행을 업데이트, upsert 또는 삭제하려면 해당 작업을 위해 행에 태그를 지정하는 데 행 변경 변환이 필요합니다. |
예 | true 또는 false |
deletable insertable updateable upsertable |
키 열 | 업데이트, upsert, 삭제의 경우 변경할 행을 결정하기 위해 키 열을 설정해야 합니다. 키로 선택한 열 이름은 후속 업데이트, upsert, 삭제의 일부로 사용됩니다. 따라서 싱크 매핑에 있는 열을 선택해야 합니다. |
아니요 | 배열 | 키 |
키 열 쓰기 건너뛰기 | 키 열에 값을 쓰지 않으려면 “키 열 작성 건너뛰기”를 선택합니다. | 아니요 | true 또는 false |
skipKeyWrites |
테이블 작업 | 쓰기 전에 대상 테이블에서 모든 행을 다시 만들지 또는 제거할지 여부를 결정합니다. - None: 테이블에 대한 작업이 수행되지 않습니다. - Recreate: 테이블이 삭제되고 다시 생성됩니다. 동적으로 새 테이블을 만드는 경우 필요합니다. - Truncate: 대상 테이블의 모든 행이 제거됩니다. |
아니요 | true 또는 false |
recreate truncate |
Batch 크기 | 각 일괄 처리에 작성되는 행 수를 지정합니다. 일괄 처리 크기가 클수록 압축 및 메모리 최적화가 향상되지만 데이터를 캐시할 때 메모리 부족 예외가 발생할 위험이 있습니다. | 아니요 | 정수 | batchSize |
사용자 DB 스키마 선택 | 기본적으로 임시 테이블은 싱크 스키마 아래에 스테이징으로 만들어집니다. 또는 싱크 스키마 사용 옵션을 선택 취소하고 대신 Data Factory가 업스트림 데이터를 로드하는 준비 테이블을 만들고 완료 시 자동으로 정리할 스키마 이름을 지정할 수 있습니다. 데이터베이스에 대한 테이블 만들기 권한과 스키마에 대한 변경 권한이 있는지 확인합니다. | 아니요 | 문자열 | stagingSchemaName |
사전 및 사후 SQL 스크립트 | 데이터를 싱크 데이터베이스에 기록하기 전(사전 처리)과 후(사후 처리)에 실행할 여러 줄 SQL 스크립트를 지정합니다. | 아니요 | 문자열 | preSQLs postSQLs |
팁
- 여러 명령이 있는 단일 일괄 처리 스크립트는 여러 일괄 처리로 분할하는 것이 좋습니다.
- 단순 업데이트 횟수를 반환하는 DDL(데이터 정의 언어) 및 DML(데이터 조작 언어) 문만 일괄 처리의 일부로 실행할 수 있습니다. 일괄 처리 작업 수행의 자세한 정보
증분 추출 사용: 이 옵션을 사용하여 파이프라인이 마지막으로 실행된 이후 변경된 행만 처리하도록 ADF에 지시합니다.
증분 열: 증분 추출 기능을 사용하는 경우 원본 테이블에서 워터마크로 사용할 날짜/시간 또는 숫자 열을 선택해야 합니다.
처음부터 읽기 시작: 증분 추출을 사용하여 이 옵션을 설정하면 증분 추출이 켜진 파이프라인의 첫 번째 실행 시 모든 행을 읽도록 ADF에 지시합니다.
Azure Database for PostgreSQL 싱크 스크립트 예
Azure Database for PostgreSQL을 싱크 형식으로 사용하는 경우 연결된 데이터 흐름 스크립트는 다음과 같습니다.
IncomingStream sink(allowSchemaDrift: true,
validateSchema: false,
deletable:false,
insertable:true,
updateable:true,
upsertable:true,
keys:['keyColumn'],
format: 'table',
skipDuplicateMapInputs: true,
skipDuplicateMapOutputs: true) ~> AzurePostgreSQLSink
조회 작업 속성
속성에 대한 자세한 내용은 조회 작업을 참조하세요.
관련 콘텐츠
복사 작업에서 원본 및 싱크로 지원되는 데이터 저장소 목록은 지원되는 데이터 저장소를 참조하세요.