변환 API를 사용한 SQL 쿼리 변환

이 문서에서는 BigQuery에서 변환 API를 사용하여 다른 SQL 언어로 작성된 스크립트를 GoogleSQL 쿼리로 변환하는 방법을 설명합니다. 변환 API를 사용하면 워크로드를 BigQuery로 마이그레이션하는 프로세스를 간소화할 수 있습니다.

시작하기 전에

변환 작업을 제출하기 전에 다음 단계를 완료하세요.

  1. 필요한 모든 권한이 있는지 확인합니다.
  2. BigQuery Migration API를 사용 설정합니다.
  3. 변환할 SQL 스크립트와 쿼리가 포함된 소스 파일을 수집합니다.
  4. Cloud Storage에 소스 파일 업로드

필수 권한

변환 API를 사용하여 변환 작업을 만드는 데 필요한 권한을 얻으려면 관리자에게 parent 리소스에 대한 MigrationWorkflow 편집자(roles/bigquerymigration.editor) IAM 역할을 부여해 달라고 요청하세요. 역할 부여에 대한 자세한 내용은 액세스 관리를 참조하세요.

이 사전 정의된 역할에는 변환 API를 사용하여 변환 작업을 만드는 데 필요한 권한이 포함되어 있습니다. 필요한 정확한 권한을 보려면 필수 권한 섹션을 펼치세요.

필수 권한

변환 API를 사용하여 변환 작업을 만들려면 다음 권한이 필요합니다.

  • bigquerymigration.workflows.create
  • bigquerymigration.workflows.get

커스텀 역할이나 다른 사전 정의된 역할을 사용하여 이 권한을 부여받을 수도 있습니다.

BigQuery Migration API 사용 설정

Google Cloud CLI 프로젝트가 2022년 2월 15일 이전에 생성된 경우 다음과 같이 BigQuery Migration API를 사용 설정합니다.

  1. Google Cloud 콘솔에서 BigQuery Migration API 페이지로 이동합니다.

    BigQuery Migration API로 이동

  2. 사용 설정을 클릭합니다.

Cloud Storage에 입력 파일 업로드

Google Cloud 콘솔 또는 BigQuery Migration API를 사용하여 변환 작업을 수행하려면 Cloud Storage로 변환할 쿼리와 스크립트가 포함된 소스 파일을 업로드해야 합니다. 또한 소스 파일이 포함된 동일한 Cloud Storage 버킷에 모든 메타데이터 파일 또는 구성 YAML 파일을 업로드할 수 있습니다. 버킷 생성 및 Cloud Storage에 파일 업로드에 대한 자세한 내용은 버킷 만들기파일 시스템에서 객체 업로드를 참조하세요.

지원되는 태스크 유형

변환 API는 다음 SQL 언어를 GoogleSQL로 변환할 수 있습니다.

  • Amazon Redshift SQL - Redshift2BigQuery_Translation
  • Apache HiveQL 및 Beeline CLI - HiveQL2BigQuery_Translation
  • Apache Spark SQL - SparkSQL2BigQuery_Translation
  • Azure Synapse T-SQL - AzureSynapse2BigQuery_Translation
  • Greenplum SQL - Greenplum2BigQuery_Translation
  • IBM Db2 SQL - Db22BigQuery_Translation
  • IBM Netezza SQL 및 NZPLSQL - Netezza2BigQuery_Translation
  • MySQL SQL - MySQL2BigQuery_Translation
  • Oracle SQL, PL/SQL, Exadata - Oracle2BigQuery_Translation
  • PostgreSQL SQL - Postgresql2BigQuery_Translation
  • Presto 또는 Trino SQL - Presto2BigQuery_Translation
  • Snowflake SQL - Snowflake2BigQuery_Translation
  • SQLite - SQLite2BigQuery_Translation
  • SQL Server T-SQL - SQLServer2BigQuery_Translation
  • Teradata 및 Teradata Vantage - Teradata2BigQuery_Translation
  • Vertica SQL - Vertica2BigQuery_Translation

위치

다음 처리 위치에서 변환 API를 사용할 수 있습니다.

리전 설명 리전 이름 세부정보
아시아 태평양
도쿄 asia-northeast1
뭄바이 asia-south1
싱가포르 asia-southeast1
시드니 australia-southeast1
유럽
EU 멀티 리전 eu
바르샤바 europe-central2
핀란드 europe-north1 리프 아이콘 낮은 CO2
마드리드 europe-southwest1
벨기에 europe-west1 리프 아이콘 낮은 CO2
런던 europe-west2 리프 아이콘 낮은 CO2
프랑크푸르트 europe-west3 리프 아이콘 낮은 CO2
네덜란드 europe-west4
취리히 europe-west6 리프 아이콘 낮은 CO2
파리 europe-west9 리프 아이콘 낮은 CO2
토리노 europe-west12
미주
상파울루 southamerica-east1 리프 아이콘 낮은 CO2
미국 멀티 리전 us
아이오와 us-central1 리프 아이콘 낮은 CO2
사우스캐롤라이나 us-east1
북버지니아 us-east4
오하이오 주 콜럼부스 us-east5
댈러스 us-south1
오리건 us-west1 리프 아이콘 낮은 CO2
로스앤젤레스 us-west2
솔트레이크시티 us-west3

변환 작업 제출

변환 API를 사용하여 변환 작업을 제출하려면 projects.locations.workflows.create 메서드를 사용하고 MigrationWorkflow 리소스의 인스턴스를 지원되는 태스크 유형으로 제공합니다.

예시: 일괄 변환 만들기

다음 curl 명령어는 입력 및 출력 파일이 Cloud Storage에 저장되는 일괄 변환 작업을 만듭니다. source_target_mapping 필드에는 소스 literal 항목을 대상 출력에 대한 선택적 상대 경로로 매핑하는 목록이 포함됩니다.

curl -d "{
  \"tasks\": {
      string: {
        \"type\": \"TYPE\",
        \"translation_details\": {
            \"target_base_uri\": \"TARGET_BASE\",
            \"source_target_mapping\": {
              \"source_spec\": {
                  \"base_uri\": \"BASE\"
              }
            },
        }
      }
  }
  }" \
  -H "Content-Type:application/json" \
  -H "Authorization: Bearer TOKEN" -X POST https://bigquerymigration.googleapis.com/v2alpha/projects/PROJECT_ID/locations/LOCATION/workflows

다음을 바꿉니다.

  • TYPE: 소스 및 대상 언어를 결정하는 변환의 태스크 유형입니다.
  • TARGET_BASE: 모든 변환 출력에 대한 기본 URI입니다.
  • BASE: 변환 소스로 읽는 모든 파일의 기본 URI입니다.
  • TOKEN: 인증용 토큰입니다. 토큰을 생성하려면 gcloud auth print-access-token 명령어 또는 OAuth 2.0 Playground(https://www.googleapis.com/auth/cloud-platform 범위 사용)를 사용합니다.
  • PROJECT_ID: 변환을 처리할 프로젝트입니다.
  • LOCATION: 작업이 처리되는 위치입니다.

위 명령어는 projects/PROJECT_ID/locations/LOCATION/workflows/WORKFLOW_ID 형식으로 작성된 워크플로 ID가 포함된 응답을 반환합니다.

예시: 문자열 리터럴 입력 및 출력을 사용하여 대화형 변환 작업 만들기

다음 curl 명령어는 문자열 리터럴 입력과 출력을 사용하여 변환 작업을 만듭니다. source_target_mapping 필드에는 소스 디렉터리를 대상 출력에 대한 선택적 상대 경로에 매핑하는 목록이 포함됩니다.

curl -d "{
  \"tasks\": {
      string: {
        \"type\": \"TYPE\",
        \"translation_details\": {
        \"source_target_mapping\": {
            \"source_spec\": {
              \"literal\": {
              \"relative_path\": \"PATH\",
              \"literal_string\": \"STRING\"
              }
            }
        },
        \"target_return_literals\": \"TARGETS\",
        }
      }
  }
  }" \
  -H "Content-Type:application/json" \
  -H "Authorization: Bearer TOKEN" -X POST https://bigquerymigration.googleapis.com/v2alpha/projects/PROJECT_ID/locations/LOCATION/workflows

다음을 바꿉니다.

  • TYPE: 소스 및 대상 언어를 결정하는 변환의 태스크 유형입니다.
  • PATH: 파일 이름 또는 경로와 유사한 리터럴 항목의 식별자입니다.
  • STRING: 변환할 리터럴 입력 데이터(예: SQL)의 문자열입니다.
  • TARGETS: 사용자가 literal 형식의 응답으로 직접 반환되기를 원하는 예상 대상입니다. 이는 대상 URI 형식이어야 합니다(예: GENERATED_DIR + target_spec.relative_path + source_spec.literal.relative_path). 이 목록에 없는 항목은 응답으로 반환되지 않습니다. 일반 SQL 변환용으로 생성된 디렉터리 GENERATED_DIRsql/입니다.
  • TOKEN: 인증용 토큰입니다. 토큰을 생성하려면 gcloud auth print-access-token 명령어 또는 OAuth 2.0 Playground(https://www.googleapis.com/auth/cloud-platform 범위 사용)를 사용합니다.
  • PROJECT_ID: 변환을 처리할 프로젝트입니다.
  • LOCATION: 작업이 처리되는 위치입니다.

위 명령어는 projects/PROJECT_ID/locations/LOCATION/workflows/WORKFLOW_ID 형식으로 작성된 워크플로 ID가 포함된 응답을 반환합니다.

변환 출력 살펴보기

변환 작업을 실행한 후 다음 명령어를 사용해서 변환 작업 워크플로 ID를 지정하여 결과를 검색합니다.

curl \
-H "Content-Type:application/json" \
-H "Authorization:Bearer TOKEN" -X GET https://bigquerymigration.googleapis.com/v2alpha/projects/PROJECT_ID/locations/LOCATION/workflows/WORKFLOW_ID

다음을 바꿉니다.

  • TOKEN: 인증용 토큰입니다. 토큰을 생성하려면 gcloud auth print-access-token 명령어 또는 OAuth 2.0 Playground(https://www.googleapis.com/auth/cloud-platform 범위 사용)를 사용합니다.
  • PROJECT_ID: 변환을 처리할 프로젝트입니다.
  • LOCATION: 작업이 처리되는 위치입니다.
  • WORKFLOW_ID: 변환 워크플로를 만들 때 생성된 ID입니다.