데이터 레이크 테이블의 식별자 처리
데이터 레이크 테이블의 식별자 처리는 일반 Db2 식별자보다 더 제한적입니다. 이러한 테이블은 Db2 카탈로그 테이블과 Hive 메타스토어(HMS)에서 모두 유지 관리되기 때문입니다. 따라서 식별자 의미는 Db2 와 Hive 에서 모두 지원되는 것의 하위 집합으로 제한됩니다.
Db2 식별자 처리에 대한 자세한 내용은 식별자를 참조하세요.
MySchema 스키마 아래에 MYTABLE 테이블을 만드는 다음 예제를 살펴보겠습니다:create datalake table "MySchema"."MYTABLE" (c1 int) location 'db2remote://odfdefault//default/MYTAB'를 반환합니다:DB20000I The SQL command completed successfully.
이제 CREATE Datalake TABLE 문을 다시 실행하여 다른 테이블(TABLEXX)을 생성하되 다음 예제와 같이 스키마 이름의 대소문자를 Myschema 로 변경해 보겠습니다:create datalake table "Myschema"."TABLEXX" (c1 int) location 'db2remote://odfdefault//default/MYTAB'를 반환합니다:
DB21034E The command was processed as an SQL statement because it was not a
valid Command Line Processor command. During SQL processing it returned:
SQL0601N The name of the object to be created is identical to the existing
name "myschema" of type "SCHEMA". SQLSTATE=42710스키마 이름이 CREATE Datalake TABLE 문을 처음 실행한 경우와 대/소문자만 다르기 때문에 CREATE Datalake TABLE 문의 두 번째 실행이 실패했습니다.select varchar(tabschema,25) as db2_schema, varchar(hiveschema,25) as hive_schema, varchar(tabname,25) as db2_tabname, varchar(hivetab,25) as hive_tabname from syshadoop.hcat_tables where upper(tabschema) = upper('myschema') and upper(tabname) = upper('mytab')를 반환합니다:
DB2_SCHEMA HIVE_SCHEMA DB2_TABNAME HIVE_TABNAME
------------------------- ------------------------- ------------------------- -------------------------
MySchema myschema MyTab mytab
1 record(s) selected.
SELECT 출력에서 사용할 수 있는 유일한 '대/소문자' 버전의 "myschema"는 "MySchema" 입니다.Hive 의 일반 식별자는 하나 이상의 영숫자(A-Z, 0-9)와 밑줄로 시작하면 안 되는 밑줄로 구성된 시퀀스입니다. Hive 의 구분 식별자는 백틱으로 묶인 하나 이상의 UTF-8 문자로 이루어진 시퀀스입니다. 그러나 식별자가 사용되는 컨텍스트에 따라 UTF-8 문자 집합의 하위 집합만 허용됩니다. 시퀀스의 선행 및 후행 공백은 식별자의 컨텍스트에 따라 다르게 처리됩니다. 예를 들어 스키마 및 테이블 이름에서는 선행 및 후행 공백이 제거되지만 열 이름에서는 공백이 유지됩니다.
스키마 및 테이블 이름에는 다음과 같은 지원 문자를 포함할 수 있습니다: A-Z, a-z, 0-9,
'"', '%', '&','\'', '(', ')', '*', '+', ',', '-', '/', ':', ';', '<', '=', '>', '?', '[',
']','_', '|', '{', '}', '$', '^', '!', '~', '#', '@', '', or ' '. 스키마 이름 또는 테이블 이름에 지원되지 않는 문자가 포함되어 있으면 오류가 발생합니다. 또한 스키마 및 테이블 이름에 '.' 이 포함되어 있거나 스키마 이름이 '@' 으로 시작하거나 스키마 이름이 '#' or '!' 으로 끝나는 경우 오류가 발생합니다.
일반적으로 열 이름에는 UTF-8 문자를 포함할 수 있습니다. 그러나 스키마 및 테이블 이름과 마찬가지로 지원되지 않는 문자가 몇 가지 있습니다. 문자 '.' 및 ':'는 지원되지 않습니다. 사용하는 스토리지 핸들러와 스토리지 형식에 따라 추가적인 제한 사항이 있습니다:
Hive 의 제한으로 인해 쪽모이 세공 파일 형식을 사용하는 Hive 데이터레이크 테이블의 열 이름에는 공백을 포함한 많은 특수 문자가 지원되지 않습니다.
Avro 파일 형식을 사용하는 Hive 데이터레이크 테이블의 열 이름에는 C 식별자(문자로 시작한 다음 문자, 숫자 또는 밑줄로 시작해야 함) 만 사용할 수 있습니다.
지원되지 않는 식별자를 사용하면 SQL0113N 오류가 반환됩니다.