Azure Data Factory 또는 Synapse Analytics를 사용하여 PostgreSQL에서 데이터 복사
적용 대상: Azure Data Factory Azure Synapse Analytics
팁
기업용 올인원 분석 솔루션인 Microsoft Fabric의 Data Factory를 사용해 보세요. Microsoft Fabric은 데이터 이동부터 데이터 과학, 실시간 분석, 비즈니스 인텔리전스 및 보고에 이르기까지 모든 것을 다룹니다. 무료로 새 평가판을 시작하는 방법을 알아봅니다!
이 문서에서는 Azure Data Factory 및 Synapse Analytics 파이프라인에서 복사 작업을 사용하여 PostgreSQL 데이터베이스에서 데이터를 복사하는 방법을 간략하게 설명합니다. 이 문서는 복사 작업에 대한 일반적인 개요를 제공하는 복사 작업 개요 문서를 기반으로 합니다.
Important
새로운 PostgreSQL 커넥터는 개선된 네이티브 PostgreSQL 지원을 제공합니다. 솔루션에서 레거시 PostgreSQL 커넥터를 사용하는 경우 2024년 10월 31일 이전에 PostgreSQL 커넥터를 업그레이드하세요. 레거시 버전과 최신 버전의 차이점에 대한 자세한 내용은 이 섹션을 참조하세요.
지원되는 기능
이 PostgreSQL 커넥터는 다음 기능에 대해 지원됩니다.
지원되는 기능 | IR |
---|---|
복사 작업(원본/-) | (1) (2) |
조회 작업 | (1) (2) |
① Azure 통합 런타임 ② 자체 호스팅 통합 런타임
복사 작업의 원본/싱크로 지원되는 데이터 저장소 목록은 지원되는 데이터 저장소 표를 참조하세요.
특히 이 PostgreSQL 커넥터는 PostgreSQL 버전 12 이상을 지원합니다.
필수 조건
데이터 저장소가 온-프레미스 네트워크, Azure 가상 네트워크 또는 Amazon Virtual Private Cloud 내에 있는 경우 자체 호스팅된 통합 런타임을 구성하여 연결해야 합니다.
데이터 저장소가 관리형 클라우드 데이터 서비스인 경우 Azure Integration Runtime을 사용할 수 있습니다. 액세스가 방화벽 규칙에서 승인된 IP로 제한되는 경우 허용 목록에 Azure Integration Runtime IP를 추가할 수 있습니다.
또한 Azure Data Factory의 관리형 가상 네트워크 통합 런타임 기능을 사용하면 자체 호스팅 통합 런타임을 설치하고 구성하지 않고도 온-프레미스 네트워크에 액세스할 수 있습니다.
Data Factory에서 지원하는 네트워크 보안 메커니즘 및 옵션에 대한 자세한 내용은 데이터 액세스 전략을 참조하세요.
Integration Runtime은 버전 3.7부터 시작하는 기본 제공 PostgreSQL 드라이버를 제공하므로 수동으로 드라이버를 설치할 필요가 없습니다.
시작하기
파이프라인에 복사 작업을 수행하려면 다음 도구 또는 SDK 중 하나를 사용하면 됩니다.
UI를 사용하여 PostgreSQL에 연결된 서비스 만들기
다음 단계를 사용하여 Azure Portal UI에서 PostgreSQL에 연결된 서비스를 만듭니다.
Azure Data Factory 또는 Synapse 작업 영역에서 관리 탭으로 이동하여 연결된 서비스를 선택하고 새로 만들기를 클릭합니다.
Postgre를 검색하고 PostgreSQL 커넥터를 선택합니다.
서비스 세부 정보를 구성하고, 연결을 테스트하고, 새로운 연결된 서비스를 만듭니다.
커넥터 구성 세부 정보
다음 섹션에서는 PostgreSQL 커넥터에 한정된 Data Factory 엔터티를 정의하는 데 사용되는 속성에 대해 자세히 설명합니다.
연결된 서비스 속성
PostgreSQL 연결된 서비스에 다음 속성이 지원됩니다.
속성 | 설명 | 필수 |
---|---|---|
type | 형식 속성은 PostgreSqlV2로 설정되어야 합니다. | 예 |
server | PostgreSQL이 실행 중인 호스트 이름(선택적으로 포트)을 지정합니다. | 예 |
port | PostgreSQL 서버의 TCP 포트. | 아니요 |
database | 연결할 PostgreSQL 데이터베이스. | 예 |
사용자 이름 | 연결할 사용자 이름. IntegratedSecurity를 사용하는 경우에는 필요하지 않습니다. | 예 |
password | 연결할 암호. IntegratedSecurity를 사용하는 경우에는 필요하지 않습니다. | 예 |
sslMode | 서버 지원에 따라 SSL 사용 여부를 제어합니다. - 사용 안 함: SSL이 사용하지 않도록 설정됩니다. 서버에 SSL이 필요한 경우 연결이 실패합니다. - 허용: 서버에서 허용하는 경우 SSL이 아닌 연결을 선호하지만 SSL 연결은 허용합니다. - 선호: 서버에서 SSL 연결을 허용하는 경우 SSL 연결을 선호하지만 SSL 없는 연결은 허용합니다. - 필수: 서버가 SSL을 지원하지 않으면 연결이 실패합니다. - 확인-ca: 서버가 SSL을 지원하지 않으면 연결이 실패합니다. 또한 서버 인증서를 확인합니다. - 확인-전체: 서버가 SSL을 지원하지 않으면 연결이 실패합니다. 또한 호스트 이름으로 서버 인증서를 확인합니다. 옵션: 사용 안 함(0) / 허용(1) / 선호(2)(기본값) / 필수(3) / 확인-ca(4) / 확인-전체(5) |
아니요 |
authenticationType | 데이터베이스에 연결하기 위한 인증 유형입니다. 기본만 지원합니다. | 예 |
connectVia | 데이터 저장소에 연결하는 데 사용할 Integration Runtime입니다. 필수 구성 요소 섹션에서 자세히 알아보세요. 지정하지 않으면 기본 Azure Integration Runtime을 사용합니다. | 아니요 |
추가 연결 속성: | ||
schema(스키마) | 스키마 검색 경로를 설정합니다. | 아니요 |
풀링 | 연결 풀링을 사용해야 하는지 여부를 나타냅니다. | 아니요 |
connectionTimeout | 연결을 시도하고 오류가 발생하기 전에 연결을 시도하는 동안 대기하는 시간(초)입니다. | 아니요 |
commandTimeout | 시도를 종료하고 오류를 생성하기 전에 명령을 실행하려고 시도하는 동안 대기하는 시간(초)입니다. 무한대는 0으로 설정합니다. | 아니요 |
trustServerCertificate | 서버 인증서의 유효성을 검사하지 않고 신뢰할지 여부를 나타냅니다. | 아니요 |
sslCertificate | 서버로 전송될 클라이언트 인증서의 위치입니다. | 아니요 |
sslKey | 서버로 전송될 클라이언트 인증서의 클라이언트 키 위치입니다. | 아니요 |
sslPassword | 클라이언트 인증서 키의 암호입니다. | 아니요 |
readBufferSize | Npgsql이 읽을 때 사용하는 내부 버퍼의 크기를 결정합니다. 데이터베이스에서 큰 값을 전송하는 경우 증가시키면 성능이 개선될 수 있습니다. | 아니요 |
logParameters | 사용하도록 설정되면 명령이 실행될 때 매개 변수 값이 기록됩니다. | 아니요 |
표준 시간대 | 세션 시간대를 가져오거나 설정합니다. | 아니요 |
encoding | PostgreSQL 문자열 데이터를 인코딩/디코딩하는 데 사용되는 .NET 인코딩을 가져오거나 설정합니다. | 아니요 |
참고 항목
자체 호스팅 Integration Runtime을 사용할 때 ODBC 연결을 통해 전체 SSL 확인을 수행하려면 PostgreSQL 커넥터 대신 ODBC 형식 연결을 명시적으로 사용하고 다음 구성을 완료해야 합니다.
- 원하는 SHIR 서버에서 DSN을 설정합니다.
- PostgreSQL에 대한 적절한 인증서를 SHIR 서버의 C:\Windows\ServiceProfiles\DIAHostService\AppData\Roaming\postgresql\root.crt에 배치합니다. ODBC 드라이버가 여기서 데이터베이스에 연결할 때 확인할 SSL 인증서를 > 찾습니다.
- 데이터 팩터리 연결에서는 SHIR 서버에서 만든 DSN을 가리키는 연결 문자열과 함께 ODBC 형식 연결을 사용합니다.
예제:
{
"name": "PostgreSqlLinkedService",
"properties": {
"type": "PostgreSqlV2",
"typeProperties": {
"server": "<server>",
"port": 5432,
"database": "<database>",
"username": "<username>",
"password": {
"type": "SecureString",
"value": "<password>"
},
"sslmode": <sslmode>,
"authenticationType": "Basic"
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
예제: Azure Key Vault에 암호 저장
{
"name": "PostgreSqlLinkedService",
"properties": {
"type": "PostgreSqlV2",
"typeProperties": {
"server": "<server>",
"port": 5432,
"database": "<database>",
"username": "<username>",
"password": {
"type": "AzureKeyVaultSecret",
"store": {
"referenceName": "<Azure Key Vault linked service name>",
"type": "LinkedServiceReference"
},
"secretName": "<secretName>"
}
"sslmode": <sslmode>,
"authenticationType": "Basic"
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
데이터 세트 속성
데이터 세트 정의에 사용할 수 있는 섹션 및 속성의 전체 목록은 데이터 세트 문서를 참조하세요. 이 섹션에서는 PostgreSQL 데이터 세트에서 지원하는 속성의 목록을 제공합니다.
PostgreSQL에서 데이터를 복사하려는 경우 다음과 같은 속성이 지원됩니다.
속성 | 설명 | 필수 |
---|---|---|
type | 데이터 세트의 형식 속성은 PostgreSqlV2Table로 설정되어야 합니다. | 예 |
schema(스키마) | 스키마의 이름입니다. | 아니요(작업 원본에서 "query"가 지정된 경우) |
table | 테이블 이름입니다. | 아니요(작업 원본에서 "query"가 지정된 경우) |
예제
{
"name": "PostgreSQLDataset",
"properties":
{
"type": "PostgreSqlV2Table",
"linkedServiceName": {
"referenceName": "<PostgreSQL linked service name>",
"type": "LinkedServiceReference"
},
"annotations": [],
"schema": [],
"typeProperties": {
"schema": "<schema name>",
"table": "<table name>"
}
}
}
RelationalTable
형식의 데이터 세트를 사용하고 있는 경우 현재는 그대로 지원되지만 추후에는 새 형식 사용을 권합니다.
복사 작업 속성
작업 정의에 사용할 수 있는 섹션 및 속성의 전체 목록은 파이프라인 문서를 참조하세요. 이 섹션에서는 PostgreSQL 원본에서 지원하는 속성의 목록을 제공합니다.
PostgreSQL을 원본으로
PostgreSQL에서 데이터를 복사하기 위해 복사 작업 원본 섹션에서 지원되는 속성은 다음과 같습니다.
속성 | 설명 | 필수 |
---|---|---|
type | 복사 작업 원본의 형식 속성은 PostgreSqlV2Source로 설정되어야 합니다. | 예 |
query | 사용자 지정 SQL 쿼리를 사용하여 데이터를 읽습니다. 예: "query": "SELECT * FROM \"MySchema\".\"MyTable\"" |
아니요(데이터 세트의 "tableName"이 지정된 경우) |
queryTimeout | 명령 실행 시도를 종료하고 오류를 생성하기 전의 대기 시간(기본값은 120분)입니다. 이 속성에 대해 매개 변수를 설정한 경우 허용되는 값은 시간 범위(예: "02:00:00"(120분)입니다. 자세한 내용은 CommandTimeout을 참조하세요. 둘 다 commandTimeout 구성 queryTimeout queryTimeout 되면 우선 적용됩니다. |
아니요 |
참고 항목
스키마 및 테이블 이름은 대/소문자를 구분합니다. 쿼리에서 ""
(큰따옴표)로 묶습니다.
예제:
"activities":[
{
"name": "CopyFromPostgreSQL",
"type": "Copy",
"inputs": [
{
"referenceName": "<PostgreSQL input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "PostgreSqlV2Source",
"query": "SELECT * FROM \"MySchema\".\"MyTable\"",
"queryTimeout": "00:10:00"
},
"sink": {
"type": "<sink type>"
}
}
}
]
RelationalSource
형식의 원본을 사용하고 있는 경우 현재까지 지원되지만 앞으로는 새 형식을 사용하는 것이 좋습니다.
PostgreSQL에 대한 데이터 형식 매핑
PostgreSQL에서 데이터를 복사할 때 PostgreSQL 데이터 형식에서 서비스가 내부적으로 사용하는 중간 데이터 형식으로 다음 매핑이 사용됩니다. 복사 작업에서 원본 스키마 및 데이터 형식을 싱크에 매핑하는 방법에 대한 자세한 내용은 스키마 및 데이터 형식 매핑을 참조하세요.
PostgreSql 데이터 형식 | 중간 서비스 데이터 형식 | PostgreSQL용 임시 서비스 데이터 형식(레거시) |
---|---|---|
SmallInt |
Int16 |
Int16 |
Integer |
Int32 |
Int32 |
BigInt |
Int64 |
Int64 |
Decimal (정밀도 <= 28) |
Decimal |
Decimal |
Decimal (정밀도 > 28) |
지원되지 않음 | String |
Numeric |
Decimal |
Decimal |
Real |
Single |
Single |
Double |
Double |
Double |
SmallSerial |
Int16 |
Int16 |
Serial |
Int32 |
Int32 |
BigSerial |
Int64 |
Int64 |
Money |
Decimal |
String |
Char |
String |
String |
Varchar |
String |
String |
Text |
String |
String |
Bytea |
Byte[] |
Byte[] |
Timestamp |
DateTime |
DateTime |
Timestamp with time zone |
DateTime |
String |
Date |
DateTime |
DateTime |
Time |
TimeSpan |
TimeSpan |
Time with time zone |
DateTimeOffset |
String |
Interval |
TimeSpan |
String |
Boolean |
Boolean |
Boolean |
Point |
String |
String |
Line |
String |
String |
Iseg |
String |
String |
Box |
String |
String |
Path |
String |
String |
Polygon |
String |
String |
Circle |
String |
String |
Cidr |
String |
String |
Inet |
String |
String |
Macaddr |
String |
String |
Macaddr8 |
String |
String |
Tsvector |
String |
String |
Tsquery |
String |
String |
UUID |
Guid |
Guid |
Json |
String |
String |
Jsonb |
String |
String |
Array |
String |
String |
Bit |
Byte[] |
Byte[] |
Bit varying |
Byte[] |
Byte[] |
XML |
String |
String |
IntArray |
String |
String |
TextArray |
String |
String |
NumericArray |
String |
String |
DateArray |
String |
String |
Range |
String |
String |
Bpchar |
String |
String |
조회 작업 속성
속성에 대한 자세한 내용을 보려면 조회 작업을 확인하세요.
PostgreSQL 커넥터 업그레이드
PostgreSQL 커넥터를 업그레이드하는 데 도움이 되는 단계는 다음과 같습니다.
새 PostgreSQL 연결된 서비스를 만들고 연결된 서비스 속성을 참조하여 구성합니다.
최신 PostgreSQL 연결 서비스의 데이터 형식 매핑은 레거시 버전의 데이터 형식 매핑과 다릅니다. 최신 데이터 형식 매핑에 대해 알아보려면 PostgreSQL용 데이터 형식 매핑을 참조하세요.
PostgreSQL과 PostgreSQL(레거시)의 차이점
아래 표는 PostgreSQL과 PostgreSQL(레거시) 간의 데이터 형식 매핑 차이점을 보여 줍니다.
PostgreSQL 데이터 형식 | PostgreSQL용 임시 서비스 데이터 형식 | PostgreSQL용 임시 서비스 데이터 형식(레거시) |
---|---|---|
Money | Decimal | 문자열 |
Timestamp with time zone | DateTime | 문자열 |
Time with time zone | DateTimeOffset | 문자열 |
간격 | TimeSpan | 문자열 |
BigDecimal | 지원되지 않습니다. to_char() 함수를 사용하여 BigDecimal을 문자열로 변환하는 방법도 있습니다. |
문자열 |
관련 콘텐츠
복사 작업에서 원본 및 싱크로 지원되는 데이터 저장소 목록은 지원되는 데이터 저장소를 참조하세요.