PostgreSQL to BigQuery 템플릿은 PostgreSQL 테이블의 데이터를 기존 BigQuery 테이블에 복사하는 일괄 파이프라인입니다. 이 파이프라인은 JDBC를 사용하여 PostgreSQL에 연결합니다. 보안 강화를 위해 Cloud KMS 키로 암호화된 Base64 인코딩 사용자 이름, 비밀번호 및 연결 문자열 매개변수와 함께 Cloud KMS 키를 전달할 수도 있습니다. 사용자 이름, 비밀번호, 연결 문자열 매개변수 암호화에 대한 자세한 내용은 Cloud KMS API 암호화 엔드포인트를 참조하세요.
파이프라인 요구사항
- 파이프라인을 실행하기 전에 BigQuery 테이블이 있어야 합니다.
- BigQuery 테이블에 호환 가능한 스키마가 있어야 합니다.
- 관계형 데이터베이스는 Dataflow가 실행되는 서브넷에서 액세스할 수 있어야 합니다.
템플릿 매개변수
매개변수 | 설명 |
---|---|
connectionURL |
JDBC 연결 URL 문자열입니다. 예를 들면 jdbc:postgresql://some-host:5432/sampledb 입니다.
이 값을 Cloud KMS 키로 암호화된 Base64 인코딩 문자열로 전달할 수 있습니다.
Base64로 인코딩된 문자열에서 공백 문자를 삭제하세요. |
outputTable |
BigQuery 출력 테이블 위치로, <my-project>:<my-dataset>.<my-table> 형식입니다. |
bigQueryLoadingTemporaryDirectory |
BigQuery 로드 프로세스를 위한 임시 디렉터리입니다.
예를 들면 gs://<my-bucket>/my-files/temp_dir 입니다. |
query |
데이터를 추출하기 위해 소스에서 실행될 쿼리입니다. 예를 들면 select * from sampledb.sample_table 입니다.
파티션을 사용하지 않는 경우에 필요합니다. |
table |
데이터를 추출할 테이블입니다. 이 매개변수는 괄호로 묶인 서브 쿼리도 허용합니다.
예를 들면 Person 또는 (select id, name from Person) as subq 입니다.
파티션을 사용하는 경우에 필요합니다. |
partitionColumn |
파티셔닝에 사용할 열의 이름입니다. 숫자 열만 지원됩니다. 파티션을 사용하는 경우에 필요합니다. |
connectionProperties |
선택사항: JDBC 연결에 사용할 속성 문자열입니다. 문자열 형식은 [propertyName=property;]* 여야 합니다.
예를 들면 connectTimeout=60;socketTimeout=600 입니다. 자세한 내용은 PostgreSQL 문서의 연결 매개변수를 참조하세요. |
username |
(선택사항) JDBC 연결에 사용할 사용자 이름입니다. 이 값을 Cloud KMS 키로 암호화된 Base64 인코딩된 문자열로 전달할 수 있습니다. |
password |
(선택사항) JDBC 연결에 사용할 비밀번호입니다. 이 값을 Cloud KMS 키로 암호화된 Base64 인코딩된 문자열로 전달할 수 있습니다. |
KMSEncryptionKey |
(선택사항) 사용자 이름, 비밀번호, 연결 문자열을 복호화하는 데 사용할 Cloud KMS 암호화 키입니다. Cloud KMS 키를 전달할 때 사용자 이름, 비밀번호, 연결 문자열도 암호화해야 합니다. |
numPartitions |
(선택사항) 사용할 파티션 수입니다. 지정하지 않으면 작업자가 개수를 보수적으로 추정합니다. |
disabledAlgorithms |
선택사항: 중지할 쉼표로 구분된 알고리즘입니다. 이 값을 none 으로 설정하면 알고리즘이 중지되지 않습니다.
기본적으로 중지된 알고리즘은 취약점 또는 성능 문제를 일으킬 수 있으므로 이 매개변수를 사용할 때는 주의해야 합니다.
예를 들면 SSLv3, RC4. 입니다. |
extraFilesToStage |
작업자에 스테이징할 파일의 쉼표로 구분된 Cloud Storage 경로 또는 Secret Manager 보안 비밀입니다.
이러한 파일은 각 작업자의 /extra_files 디렉터리에 저장됩니다.
예를 들면 gs://<my-bucket>/file.txt,projects/<project-id>/secrets/<secret-id>/versions/<version-id> 입니다. |
템플릿 실행
콘솔
- Dataflow 템플릿에서 작업 만들기 페이지로 이동합니다. 템플릿에서 작업 만들기로 이동
- 작업 이름 필드에 고유한 작업 이름을 입력합니다.
- (선택사항): 리전 엔드포인트의 드롭다운 메뉴에서 값을 선택합니다. 기본 리전은
us-central1
입니다.Dataflow 작업을 실행할 수 있는 리전 목록은 Dataflow 위치를 참조하세요.
- Dataflow 템플릿 드롭다운 메뉴에서 the PostgreSQL to BigQuery template을 선택합니다.
- 제공된 매개변수 필드에 매개변수 값을 입력합니다.
- 작업 실행을 클릭합니다.
gcloud
셸 또는 터미널에서 템플릿을 실행합니다.
gcloud dataflow flex-template run JOB_NAME \ --project=PROJECT_ID \ --region=REGION_NAME \ --template-file-gcs-location=gs://dataflow-templates-REGION_NAME/VERSION/flex/PostgreSQL_to_BigQuery \ --parameters \ connectionURL=JDBC_CONNECTION_URL,\ query=SOURCE_SQL_QUERY,\ outputTable=PROJECT_ID:DATASET.TABLE_NAME, bigQueryLoadingTemporaryDirectory=PATH_TO_TEMP_DIR_ON_GCS,\ connectionProperties=CONNECTION_PROPERTIES,\ username=CONNECTION_USERNAME,\ password=CONNECTION_PASSWORD,\ KMSEncryptionKey=KMS_ENCRYPTION_KEY
다음을 바꿉니다.
JOB_NAME
: 선택한 고유한 작업 이름VERSION
: 사용할 템플릿 버전다음 값을 사용할 수 있습니다.
latest
: 버킷의 날짜가 지정되지 않은 상위 폴더(gs://dataflow-templates-REGION_NAME/latest/)에서 사용할 수 있는 최신 버전의 템플릿을 사용합니다.- 버전 이름(예:
2023-09-12-00_RC00
): 버킷의 날짜가 지정된 해당 상위 폴더(gs://dataflow-templates-REGION_NAME/)에 중첩되어 있는 특정 버전의 템플릿을 사용합니다.
REGION_NAME
: Dataflow 작업을 배포할 리전(예:us-central1
)JDBC_CONNECTION_URL
: JDBC 연결 URLSOURCE_SQL_QUERY
: 소스 데이터베이스에서 실행할 SQL 쿼리DATASET
: BigQuery 데이터 세트TABLE_NAME
: BigQuery 테이블 이름PATH_TO_TEMP_DIR_ON_GCS
: 임시 디렉터리의 Cloud Storage 경로CONNECTION_PROPERTIES
: JDBC 연결 속성(필요한 경우)CONNECTION_USERNAME
: JDBC 연결 사용자 이름CONNECTION_PASSWORD
: JDBC 연결 비밀번호KMS_ENCRYPTION_KEY
: Cloud KMS 암호화 키
API
REST API를 사용하여 템플릿을 실행하려면 HTTP POST 요청을 전송합니다. API 및 승인 범위에 대한 자세한 내용은 projects.templates.launch
를 참조하세요.
POST https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/LOCATION/flexTemplates:launch { "launchParameter": { "jobName": "JOB_NAME", "containerSpecGcsPath": "gs://dataflow-templates-LOCATION/VERSION/flex/PostgreSQL_to_BigQuery" "parameters": { "connectionURL": "JDBC_CONNECTION_URL", "query": "SOURCE_SQL_QUERY", "outputTable": "PROJECT_ID:DATASET.TABLE_NAME", "bigQueryLoadingTemporaryDirectory": "PATH_TO_TEMP_DIR_ON_GCS", "connectionProperties": "CONNECTION_PROPERTIES", "username": "CONNECTION_USERNAME", "password": "CONNECTION_PASSWORD", "KMSEncryptionKey":"KMS_ENCRYPTION_KEY" }, "environment": { "zone": "us-central1-f" } } }
다음을 바꿉니다.
PROJECT_ID
: Dataflow 작업을 실행하려는 Google Cloud 프로젝트 IDJOB_NAME
: 선택한 고유한 작업 이름VERSION
: 사용할 템플릿 버전다음 값을 사용할 수 있습니다.
latest
: 버킷의 날짜가 지정되지 않은 상위 폴더(gs://dataflow-templates-REGION_NAME/latest/)에서 사용할 수 있는 최신 버전의 템플릿을 사용합니다.- 버전 이름(예:
2023-09-12-00_RC00
): 버킷의 날짜가 지정된 해당 상위 폴더(gs://dataflow-templates-REGION_NAME/)에 중첩되어 있는 특정 버전의 템플릿을 사용합니다.
LOCATION
: Dataflow 작업을 배포할 리전(예:us-central1
)JDBC_CONNECTION_URL
: JDBC 연결 URLSOURCE_SQL_QUERY
: 소스 데이터베이스에서 실행할 SQL 쿼리DATASET
: BigQuery 데이터 세트TABLE_NAME
: BigQuery 테이블 이름PATH_TO_TEMP_DIR_ON_GCS
: 임시 디렉터리의 Cloud Storage 경로CONNECTION_PROPERTIES
: JDBC 연결 속성(필요한 경우)CONNECTION_USERNAME
: JDBC 연결 사용자 이름CONNECTION_PASSWORD
: JDBC 연결 비밀번호KMS_ENCRYPTION_KEY
: Cloud KMS 암호화 키
다음 단계
- Dataflow 템플릿 알아보기
- Google 제공 템플릿 목록 참조