테이블, 데이터베이스 및 열의 이름
Athena에서 데이터베이스 객체 명명에 대해 다음 팁을 사용하세요.
데이터베이스, 테이블 및 열 이름 요구 사항
-
AWS Glue의 데이터베이스 이름, 테이블 이름 및 열 이름에 사용할 수 있는 문자는 UTF-8 문자열이어야 합니다. 문자열은 1바이트 미만이거나 255바이트를 초과해서는 안 됩니다. 이 한도를 초과하면
Value at 'name' failed to satisfy constraint: Member must have length less than or equal to 255
와 같은 오류가 발생합니다. 사용할 수 있는 문자에는 공백이 포함되고 다음과 같은 한 줄 문자열 패턴으로 정의됩니다.[\u0020-\uD7FF\uE000-\uFFFD\uD800\uDC00-\uDBFF\uDFFF\t]*
-
현재 AWS Glue 정규식 패턴에서는 이름 앞에 선행 공백을 추가할 수 있습니다. 이러한 선행 공백은 탐지하기 어렵고 생성 후 사용성 문제를 일으킬 수 있으므로 선행 공백이 있는 객체 이름을 만들지 마세요.
-
AWS::Glue::Database AWS CloudFormation 템플릿을 사용하여 AWS Glue 데이터베이스를 생성하고 데이터베이스 이름을 지정하지 않으면 AWS Glue는 Athena와 호환되지 않는
resource_name–random_string
형식으로 데이터베이스 이름을 자동으로 생성합니다. -
AWS Glue 카탈로그 관리자를 사용하여 열 이름을 바꿀 수 있지만 테이블 이름이나 데이터베이스 이름은 바꿀 수 없습니다. 이 제한을 해결하려면 이전 데이터베이스의 정의를 사용하여 새 이름으로 데이터베이스를 생성해야 합니다. 그런 다음 이전 데이터베이스의 테이블 정의를 사용하여 새 데이터베이스에서 테이블을 다시 생성합니다. 이렇게 하려면 AWS CLI 또는 AWS Glue SDK를 사용하면 됩니다. 단계는 AWS CLI를 사용하여 AWS Glue 데이터베이스 및 해당 테이블 다시 생성를 참조하세요.
Athena의 테이블 이름과 테이블 열 이름에는 소문자를 사용합니다.
Athena는 DDL 및 DML 쿼리에서 대소문자 혼용을 허용하지만 쿼리를 실행할 때 이름을 소문자로 사용합니다. 이러한 이유로 테이블 또는 열 이름에 대소문자를 혼용하지 말고, Athena에서 대소문자를 통해서만 이러한 이름을 구별하지 마세요. 예를 들어 DDL 문을 사용하여 Castle
이라는 열을 만드는 경우 생성된 열은 castle
과 같이 소문자로 표시됩니다. 그런 다음 DML 쿼리에서 열 이름을 Castle
또는 CASTLE
로 지정할 경우 Athena는 쿼리를 실행할 이름을 소문자로 표시하지만 쿼리에서 선택한 대소문자를 사용하여 열 머리글을 표시합니다.
데이터베이스, 테이블 및 열 이름은 255자보다 작거나 같아야 합니다.
밑줄로 시작하는 이름
테이블을 만들 때 밑줄로 시작하는 테이블, 뷰 또는 열 이름은 백틱(`)으로 묶습니다. 다음 예를 참조하세요.
CREATE EXTERNAL TABLE IF NOT EXISTS `_myunderscoretable`( `_id` string, `_index` string) LOCATION 's3://my-athena-data/'
숫자로 시작하는 테이블, 뷰 또는 열 이름
SELECT
, CTAS
또는 VIEW
쿼리를 실행하는 경우 숫자로 시작하는 테이블, 뷰 또는 열 이름과 같은 식별자를 인용 부호로 묶습니다. 다음 예를 참조하세요.
CREATE OR REPLACE VIEW "123view" AS SELECT "123columnone", "123columntwo" FROM "234table"
열 이름 및 복합 유형
복합 유형의 경우 영숫자, 밑줄(_
) 및 기간(.
)만 열 이름에 허용됩니다. 제한된 문자가 있는 키에 대한 테이블 및 매핑을 만들 때 사용자 지정 DDL 문을 사용할 수 있습니다. 자세한 내용은 AWS 빅 데이터 블로그의 Create tables in Amazon Athena from nested JSON and mappings using JSONSerDe
예약어
Athena의 특정 예약어는 이스케이프를 해야 합니다. DDL 문에서 예약어를 이스케이프하려면 해당 문을 악센트 부호(`)로 묶습니다. 뷰에 대한 SQL SELECT
문과 쿼리에서 예약어를 이스케이프하려면 예약어를 큰 따옴표('')로 묶습니다.
자세한 내용은 예약어 단원을 참조하십시오.
다음 사항도 참조하십시오.
전체 데이터베이스 및 테이블 생성 구문은 다음 페이지를 참조하세요.
AWS Glue의 데이터베이스 및 테이블에 대한 자세한 내용은 AWS Glue 개발자 안내서의 데이터베이스 및 테이블을 참조하세요.