일괄 SQL 변환기

이 문서에서는 Teradata SQL을 BigQuery 표준 SQL로 변환하기 위해 BigQuery에서 일괄 SQL 변환기를 사용하는 방법을 설명합니다. 이 문서는 Google Cloud Console에 익숙한 사용자를 대상으로 합니다.

일괄 SQL 변환기는 BigQuery Migration Service의 일부입니다. 다른 SQL 언어를 일괄적으로 BigQuery 표준 SQL로 변환하는 데 사용할 수 있습니다. BTEQ(Basic Teradata Query)와 같은 SQL 스크립트 언어도 변환할 수 있습니다.

다음 SQL 언어가 지원됩니다.

  • Teradata SQL
  • BTEQ(Basic Teradata Query)

필수 권한

BigQuery Migration Service를 사용 설정하려면 프로젝트에 대해 다음 권한이 있어야 합니다.

  • resourcemanager.projects.get
  • serviceusage.services.enable
  • serviceusage.services.get

BigQuery Migration Service를 액세스하고 사용하려면 프로젝트에 대해 다음 권한이 필요합니다.

  • bigquerymigration.workflows.create
  • bigquerymigration.workflows.get
  • bigquerymigration.workflows.list
  • bigquerymigration.workflows.delete
  • bigquerymigration.subtasks.get
  • bigquerymigration.subtasks.list

    또는 다음 역할을 사용하여 동일한 권한을 얻을 수 있습니다.

    • bigquerymigration.viewer - 읽기 전용 액세스
    • bigquerymigration.editor - 읽기/쓰기 액세스

입력 및 출력 파일에 대해 Cloud Storage 버킷에 액세스하려면 다음 권한이 있어야 합니다.

  • 소스 Cloud Storage 버킷에서 storage.objects.get
  • 소스 Cloud Storage 버킷에서 storage.objects.list
  • 대상 Cloud Storage 버킷에서 storage.objects.create

다음 역할에서 위에 표시된 모든 필요한 Cloud Storage 권한을 지정할 수 있습니다.

  • roles/storage.objectAdmin
  • roles/storage.admin

시작하기 전에

변환 작업을 제출하려면 먼저 API를 사용 설정하고 소스 파일을 Cloud Storage에 업로드해야 합니다.

Migration API 사용 설정

다음과 같이 BigQuery Migration API를 사용 설정합니다.

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

    BigQuery Migration API로 이동

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

Cloud Storage에 입력 파일 업로드

변환 작업을 시작하려면 먼저 변환하려는 쿼리 및 스크립트가 포함된 소스 파일을 업로드해야 합니다. 소스 파일에 포함될 수 있는 항목에 대한 자세한 내용은 소스 파일 형식 섹션을 참조하세요. 버킷을 만들고 Cloud Storage에 파일을 업로드하는 방법에 대한 자세한 내용은 스토리지 버킷 만들기객체 업로드를 참조하세요.

Teradata SQL에서 변환

단계에 따라 변환을 시작하고, 진행 상태를 보고, 마지막으로 결과를 확인합니다. 이러한 단계에서는 소스 파일이 Cloud Storage 버킷에 이미 업로드되었다고 가정합니다.

Console

  1. Cloud Console에서 BigQuery 페이지로 이동합니다.

    BigQuery로 이동

  2. 탐색 패널에서 SQL 변환으로 이동합니다.

  3. 변환 시작을 클릭합니다.

  4. 변환 구성 대화상자를 입력합니다.

    1. 이름에는 문자, 숫자, 밑줄이 포함될 수 있습니다.
    2. 변환 작업의 위치를 선택합니다. 가장 효율적인 실행을 위해 소스 파일 버킷과 동일한 위치를 선택합니다.
    3. 변환 모드로 Teradata SQL을 선택합니다.
  5. 계속을 클릭합니다.

  6. 소스 경로를 선택합니다. 경로를 입력하거나 찾아보기 옵션을 사용합니다. 프리픽스 필터를 추가하여 버킷에서 특정 파일을 제외할 수도 있습니다.

  7. 계속을 클릭하여 다음 단계로 이동합니다.

  8. 대상 경로를 선택합니다. 소스 경로와 마찬가지로 경로를 입력하거나 찾아보기 옵션을 사용할 수 있습니다.

  9. 간단한 변환을 수행하는 경우 만들기를 클릭하여 변환 작업을 시작할 수 있습니다. 선택적 설정을 사용하는 방법에 대한 자세한 내용은 선택적 설정 섹션을 참조하세요.

  10. 변환 작업 목록에서 작업 상태를 확인할 수 있습니다.

    변환 상태

  11. 변환이 완료되면 세부정보 표시를 클릭하여 변환 작업 결과를 확인합니다.

API

정의된 워크플로를 사용해서 create 메서드를 호출합니다.

그런 다음 start 메서드를 호출하여 변환 워크플로를 시작합니다.

BTEQ 변환 추가 설정

다음은 BTEQ 변환에 필요한 추가 필드를 보여줍니다. BTEQ 옵션은 변환 경로를 설정한 후 BTEQ 설정 탭에 설정됩니다.

입력란 필수 설명
데이터 세트 ID 필수 이 데이터 세트 ID는 스크립트에서 참조되는 테이블의 데이터 세트 프리픽스로 사용됩니다.

새 데이터를 table1에 삽입하는 삽입 문은 datasetId.table1로 변환됩니다.

기본 경로 URI 필수 이 경로를 지정하면 .IMPORT.EXPORT 문에서 기본 경로로 사용됩니다.
경로 대체 필수 아님 이 필드는 여러 번 추가할 수 있습니다. 추가된 경우 BTEQ 스크립트에 언급된 파일에 대해 파일 경로를 지정합니다. 변환 시에는 파일이 제공된 경로로 대체됩니다.

예를 들어 다음과 같은 파일 및 경로 쌍을 제공하는 경우:

  • ./file1.csv
  • gs://bucket/folder1/file1*.csv
그런 다음 file1.csv의 모든 멘션이 제공된 Cloud Storage 경로로 바뀝니다.

설정(선택사항)

이 탭의 설정은 고급 변환 설정용입니다.

입력란 설명
스키마 경로 테이블 스키마에 대해 데이터 정의 언어(DDL) 문이 포함된 Cloud Storage 경로입니다. 테이블 스키마를 제공하면 변환 결과가 향상될 수 있습니다.
파일 인코딩

이 필드는 입력 파일에 대한 인코딩을 지정합니다. 기본값은 'utf-8'입니다. 사용 가능한 인코딩은 다음과 같습니다.

  • UTF_8
  • ISO_8859_1
  • US_ASCII
  • UTF_16
  • UTF_16LE
  • UTF_16BE

SQL 식별자 대소문자 출력

테이블/열 이름의 대소문자 변환을 출력합니다. 기본값은 원래 대소문자를 그대로 두는 것입니다. 이 필드의 옵션은 다음과 같습니다.

  • 기본값
  • 기존 대소문자 유지
  • 대문자
  • 소문자

특수 토큰 맵 변환 입력 파일에 특수 토큰을 자리표시자로 사용하는 SQL 템플릿이 포함된 경우 이 섹션을 사용하여 특수 토큰에서 데이터 유형까지의 맵을 제공합니다.

다음은 특수 토큰 쌍 예시입니다.

  • 특수 토큰: <b>
  • 데이터 유형: NUMERIC
이 토큰을 사용하여 다음 Teradata SQL 문을 실행합니다.

select trim(<b>) from x;
다음과 같은 BigQuery 표준 SQL로 변환됩니다.

SELECT TRIM(CAST(<b> AS STRING)) FROM x;

출력 파일 살펴보기

변환을 실행한 후 지정한 대상 경로에서 결과 및 오류를 볼 수 있습니다. 일괄 SQL 변환기는 다음 파일을 대상 경로에 출력합니다.

  • 변환 파일
  • 유류 요약 파일

변환된 파일

각 입력 파일에 대해 해당 출력 파일이 대상 경로에 생성됩니다. 출력 파일에는 변환된 쿼리 및 오류가 포함됩니다.

오류 요약 파일

오류 요약 파일은 변환 중 발생한 모든 오류에 대한 테이블이 포함된 CSV 파일입니다. 각 입력 파일에는 해당 오류 요약 파일이 있습니다. 요약 파일의 이름은 <source_file_name>_errors.csv입니다.

다음은 오류 요약 파일의 예시입니다.

Input_Query 줄, 열 카테고리 메시지 유형
"selct * from abc" 5,1 SqlParseException 잘못된 컨텍스트에서 발생한 비쿼리 표현식 오류
'RENAM TBLE DB.table1 to DB.table2;' 1,1 SqlParseException 잘못된 컨텍스트에서 발생한 비쿼리 표현식 오류

소스 파일 형식

Cloud Storage 버킷의 소스 파일은 유효한 Teradata SQL 또는 BTEQ 스크립트 파일이어야 합니다.

소스 파일에는 다음 항목이 포함될 수 있습니다.

  • 한 행 또는 여러 행에서 세미콜론으로 끝나는 유효한 SQL 문입니다.
  • 각 저장 프로시져(SP)는 다른 SP 및 다른 SQL 문과 별도의 자체 파일에 있어야 합니다.
  • 유효한 지원되는 BTEQ 문 및 유효한 다중 문 SQL 요청(BTEQ 모드가 선택된 경우)입니다.
  • BTEQ를 변환하는 경우 /*, */, -- 또는 *로 주석이 달린 설명입니다.
  • 변환에 적용될 수 없는 특수한 자리표시자 토큰입니다. 구성 파일에서 이러한 토큰을 지정해야 합니다. 자세한 내용은 설정(선택사항)을 참조하세요.

소스 파일에는 + 지원되지 않는 BTEQ 문이 포함될 수 없습니다. 자세한 내용은 지원되지 않는 BTEQ 문을 참조하세요.

지원되는 BTEQ 문

BTEQ 변환에서는 다음 문이 지원됩니다.

  • .ACTIVITYCOUNT
  • .ERRORCODE
  • .EXIT/.QUIT
  • .EXPORT
  • .GOTO/.LABEL
  • .IF,.ELSEIF, .ELSE, .ENDIF
  • .IMPORT
  • .USING
  • .REPEAT

지원되지 않는 BTEQ 문

다음 문은 지원되지 않습니다.

  • .MAXERROR
  • .NULL
  • .REPEATSTOP
  • .RETRY
  • .RUN

제한사항

스키마 매핑 지원 안함

SQL 변환기는 소스 데이터 웨어하우스와 BigQuery 사이의 스키마 변경사항을 변환하지 않습니다. 스키마에서 변경된 열 또는 테이블 이름에 대한 모든 참조는 변환 중 입력 쿼리에 반영되지 않습니다. 예를 들어 이름이 'foo'인 열 이름을 마이그레이션 중 'bar'로 바꾼 경우에는 변환을 수행해도 'foo'를 참조하는 쿼리가 'bar'를 참조하도록 자동으로 업데이트되지 않습니다. 이러한 참조를 업데이트하려면 처리 이후 단계를 수행해서 변환된 출력 쿼리에서 해당 SQL 식별자를 바꿉니다.

다음 단계