이 페이지에서는 Cloud Storage 버킷에 저장된 CSV 파일에서 PostgreSQL용 AlloyDB 클러스터로 데이터를 가져오는 방법을 설명합니다.
AlloyDB 클러스터로 데이터를 가져오는 작업을 취소할 수 있습니다. 자세한 내용은 가져오기 작업 취소를 참고하세요.
시작하기 전에
가져오기 작업을 시작하기 전에 다음 사항을 확인하세요.
- 데이터베이스에 충분한 여유 공간이 있는지 확인합니다.
- 가져오기 작업은 데이터베이스 리소스를 사용하지만 클러스터가 프로비저닝되지 않는 한 일반적인 데이터베이스 작업에 지장을 주지 않습니다.
AlloyDB 클러스터로 가져오기에 필요한 역할 및 권한
Cloud Storage에서 AlloyDB로 데이터를 가져오려면 가져오기를 시작하는 사용자에게 다음 역할 중 하나가 있어야 합니다.
- AlloyDB 관리자 역할
- 다음 권한이 포함된 맞춤 역할:
alloydb.clusters.get
alloydb.clusters.import
또한 AlloyDB 클러스터의 서비스 계정에는 다음 역할 중 하나가 있어야 합니다.
storage.objectViewer
IAM 역할- 다음 권한이 포함된 맞춤 역할:
storage.objects.get
IAM 역할에 대한 도움말은 Identity and Access Management를 참고하세요.
CSV 파일에서 AlloyDB 클러스터로 데이터 가져오기
- 가져오기의 대상 데이터베이스와 테이블이 AlloyDB 클러스터에 있어야 합니다. 데이터베이스를 만드는 방법은 데이터베이스 만들기를 참고하세요.
- CSV 파일은 각 데이터 행에 줄이 하나씩 있고 쉼표로 구분된 필드를 사용해야 합니다.
CSV 파일을 사용하여 AlloyDB 클러스터로 데이터를 가져오려면 다음 단계를 따르세요.
gcloud
- Cloud Storage 버킷 생성
- 버킷에 CSV 파일을 업로드합니다. 버킷에 파일 업로드하기에 대한 도움말은 객체 업로드를 참고하세요.
gcloud storage buckets add-iam-policy-binding을 사용하여 버킷의 AlloyDB 서비스 계정에
storage.objectViewer
IAM 역할을 부여합니다.service-PROJECT_NUMBER@gcp-sa-alloydb.iam.gserviceaccount.com
IAM 권한 설정에 대한 도움말은 IAM 권한 사용을 참고하세요.
파일을 가져옵니다.
gcloud alloydb clusters import CLUSTER_NAME --region=REGION --gcs-uri=gs://BUCKET_NAME/FILE_NAME --database=DATABASE_NAME --user=USER --csv --table=TABLE_NAME
다음을 바꿉니다.
- CLUSTER_NAME: 클러스터의 이름입니다.
- REGION: AlloyDB 클러스터가 배포되는 리전입니다.
- BUCKET_NAME: Cloud Storage 버킷 이름입니다.
- FILE_NAME: CSV 파일의 이름입니다.
- DATABASE_NAME: 클러스터 내 데이터베이스의 이름입니다.
- USER: 가져오기 작업의 사용자입니다.
- TABLE_NAME: 데이터베이스 내의 테이블입니다.
import
명령어 사용에 관한 자세한 내용은alloydb import
명령어 참조 페이지를 확인하세요.이전에 설정한 IAM 권한을 유지할 필요가 없으면
gcloud storage buckets remove-iam-policy-binding
을 사용하여 삭제합니다.
REST v1
- Cloud Storage 버킷 생성
- 버킷에 CSV 파일을 업로드합니다. 버킷에 파일 업로드하기에 대한 도움말은 객체 업로드를 참고하세요.
가져오기 작업을 위해 서비스 계정에 Cloud Storage 버킷에 대한 권한을 부여합니다. 서비스 계정 형식을 사용하여 가져올 프로젝트의 서비스 계정을 식별합니다. 서비스 계정의 형식은 다음과 같습니다.
service-PROJECT_NUMBER@gcp-sa-alloydb.iam.gserviceaccount.com
gcloud storage buckets add-iam-policy-binding을 사용하여 버킷의 AlloyDB 클러스터 서비스 계정에
storage.objectViewer
IAM 역할을 부여합니다. IAM 권한 설정에 대한 도움말은 IAM 권한 사용을 참고하세요.파일을 가져옵니다.
다음 HTTP 메서드와 URL을 사용합니다.
POST https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID:import
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT_ID: 프로젝트 ID입니다.
- LOCATION_ID: AlloyDB 클러스터가 배포되는 리전입니다.
- CLUSTER_ID: 클러스터 ID입니다.
- BUCKET_NAME: Cloud Storage 버킷 이름입니다.
- PATH_TO_CSV_FILE: CSV 파일의 경로입니다.
- USER: 가져오기 작업의 사용자입니다.
- DATABASE_NAME: AlloyDB 클러스터 내 데이터베이스의 이름입니다.
- TABLE_NAME: 데이터베이스 내의 테이블입니다.
- COLUMNS (선택사항): 가져올 열입니다.
- ESCAPE_CHARACTER (선택사항): 이스케이프 처리되어야 하는 데이터 문자 앞에 표시되어야 하는 문자입니다. 이 인수 값은 16진수 ASCII 코드의 문자여야 합니다. 예를 들어
22
는 큰따옴표를 나타냅니다. - QUOTE_CHARACTER (선택사항): 문자열 데이터 유형이 있는 열의 값을 묶는 문자입니다.
이 인수 값은 16진수 ASCII 코드의 문자여야 합니다.
예를 들어
22
는 큰따옴표를 나타냅니다. - FIELD_DELIMITER (선택사항): 열 값을 분할하는 문자입니다. 이 인수 값은 16진수 ASCII 코드의 문자여야 합니다. 예를 들어
2C
는 쉼표를 나타냅니다.
JSON 요청 본문:
{ "gcsUri": "gs://BUCKET_NAME/PATH_TO_CSV_FILE", "database": "DATABASE_NAME", "user": "USER", "csvImportOptions": { "table": "TABLE_NAME", "columns": ["COLUMN1", "COLUMN2"], "fieldDelimiter": "FIELD_DELIMITER", "quoteCharacter": "QUOTE_CHARACTER", "escapeCharacter": "ESCAPE_CHARACTER" } }
요청을 보내려면 다음 옵션 중 하나를 펼칩니다.
cURL(Linux, macOS, Cloud Shell)
요청 본문을
request.json
파일에 저장하고 다음 명령어를 실행합니다.curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -d @request.json \ "https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/clusters/CLUSTER_ID:import"
PowerShell(Windows)
요청 본문을
request.json
파일에 저장하고 다음 명령어를 실행합니다.$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method POST ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -InFile request.json ` -Uri "https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/clusters/CLUSTER_ID:import"| Select-Object -Expand Content
다음과 유사한 JSON 응답이 표시됩니다.
응답
{ "name": "projects/PROJECT_ID/locations/LOCATION_ID/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.alloydb.v1.OperationMetadata", "createTime": "2024-09-17T06:05:31.244428646Z", "target": "projects/project-id/locations/location-id/clusters/target-cluster", "verb": "import", "requestedCancellation": false, "apiVersion": "v1" }, "done": false }
이전에 설정한 IAM 권한을 유지할 필요가 없으면 지금 삭제합니다.
이 요청에서 사용 가능한 매개변수의 전체 목록은
clusters:import
를 참고하세요.
CSV 형식 맞춤설정 및 파일 가져오기
CSV 파일에 기본이 아닌 필드 구분자 또는 따옴표나 이스케이프 문자가 포함된 경우 CSV 형식을 맞춤설정하고 파일을 가져올 수 있습니다. 기본이 아닌 형식의 CSV 파일을 가져오려면 요청에 동일한 형식 옵션을 제공해야 합니다.
다음 gcloud CLI 및 REST API 예시를 사용하여 CSV 파일 형식을 맞춤설정할 수 있습니다.
gcloud
gcloud alloydb clusters import CLUSTER_NAME --region=REGION --database=DATABASE_NAME --gcs-uri='gs://BUCKET_NAME/PATH_TO_CSV_FILE' --user=USERNAME --table=TABLE_NAME --columns=COLUMNS --field-delimiter='2C' --quote-character='22' --escape-character='5C' --csv
REST v1
이에 상응하는 REST API 요청 본문은 다음과 유사합니다.
{
"gcsUri": "gs://BUCKET_NAME/PATH_TO_CSV_FILE",
"database": "DATABASE_NAME",
"user": "USER",
"csvImportOptions": {
"table": "TABLE_NAME",
"columns": ["COLUMN1", "COLUMN2"],
"escapeCharacter": "5C",
"quoteCharacter": "22",
"fieldDelimiter": "2C",
}
}
이 태스크와 관련된 기본 REST API 요청이 생성되는 방식을 확인하려면 clusters:import
페이지의 API 탐색기를 참고하세요.
INVALID_ARGUMENT
와 같은 오류가 발생하면 테이블이 있는지 확인합니다. 테이블이 있으면 버킷에 대한 올바른 권한이 있는지 확인합니다.
Cloud Storage에서 액세스 제어를 구성하는 방법은 액세스제어 목록 만들기 및 관리를 참고하세요.
가져오기 작업 상태 확인
가져오기 작업 상태를 확인하려면 다음 단계를 따르세요.
gcloud
gcloud alloydb operations describe 명령어를 사용하여 다음을 실행합니다.
gcloud alloydb operations describe OPERATION_ID --region=REGION
이러한 작업의 상태는 STATUS
필드에 있습니다.
특정 작업의 세부정보를 나열하거나 특정 작업을 취소할 수도 있습니다. 이 명령어에 대한 자세한 내용은 gcloud alloydb operations
명령어 참조 페이지를 참고하세요.
REST v1
GET
메서드와 다음 URL을 사용합니다.
GET https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID
자세한 내용은 get
를 참조하세요.
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- REGION: AlloyDB 클러스터가 배포되는 리전입니다.
- PROJECT_ID: 프로젝트 ID입니다.
- OPERATION_ID: 가져오기 작업의 ID입니다. 자세한 내용은 시작하기 전에를 참고하세요.
요청을 보내려면 다음 옵션 중 하나를 펼칩니다.
curl (Linux, macOS, Cloud Shell)
다음 명령어를 실행합니다.
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID
PowerShell (Windows)
다음 명령어를 실행합니다.
$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method GET ` -Headers $headers ` -Uri "https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID | Select-Object -Expand Content
다음과 유사한 JSON 응답이 표시됩니다.
요청이 성공하면 응답 본문에 Operation의 인스턴스가 포함됩니다.
다음 단계
- SQL 파일을 가져오는 방법을 알아보세요.
- 가져오기 작업을 취소하는 방법을 알아보세요.
- 가져오기 작업 상태 확인