고정 길이 형식 정의
고정 길이 형식 파일에는 형식 정의가 포함되어 있어야 합니다. 이 주제에는 일반 데이터 유형의 전형적인 고정 길이 형식 정의의 예가 나와 있습니다.
레코드 끝
고정 형식 레코드가 줄 바꾸기 문자로 끝나면 별도의 조치가 필요하지 않습니다. 줄 바꾸기는
기본 레코드 끝 구분 기호입니다. 레코드 구분자가 없으면 다음 예와 같이 작은따옴표
인용 부호를 함께 사용하십시오.
RecordDelim ''레코드 끝
구분 기호는 마지막 레코드인 경우에도 필수입니다.RecordDelim 옵션은 최대 8바이트의 리터럴 시퀀스를 지정하며, 일반적인 이스케이프 표현을 변환하거나 ' char(8) 과 같은 함수를 지원하지 않습니다.
레코드 길이
레코드 길이는 선택사항이지만,
형식 정의에 올바른 길이가 지정되었는지 피드백을 제공할 수
있습니다. 이 길이는 레코드 끝 구분 기호를 제외한 것입니다. 예는 다음과 같습니다.
Recordlength 72필드 건너뛰기
다음 절은
4바이트를 건너뜁니다.
“filler char(4) bytes 4” 그러나, 기본 방법은 다음 예와 같이 필드를
건너뛰고 있음을 표시하는 것입니다.
“filler fld_name char(4) bytes 4”
임시 값
고정 길이 형식 파일의 임시 값에서 구분 기호가
생략되는 경우가 많습니다. 다음 표에서는 구분 기호 없이 날짜, 시간 및
시간소인을 로드하는 데 사용하는 절을 보여줍니다.
| 데이터 유형 | 값 | 형식 절 |
|---|---|---|
| 날짜 | 20101231 | date1 date YMD'' bytes 8 |
| 시간 | 231559 | time1 time(6) 24hour '' bytes 6 |
| 시간소인 | 0101231231559 | stamp1 timestamp(6) 24hour '' bytes 14 |
| 시간소인 | 20101231231559000001 | char(24)로 로드하고 insert-select문을
사용함
|
| 날짜 | 2010-12-31 | date2 date YMD'-' bytes 10 |
| 시간 | 23.15.59 | time2 time(6) 24hour '.' bytes 8 |
| 시간소인 | 2010-12-31 23:15:59 | tms2 timestamp(6) YMD '-' 24hour ':' bytes 19 |
| 시간소인 | 2010-12-31 23:15:59.0001 | tms3 timestamp(6)
YMD '-' 24hour ':' bytes 26 |
| timetz | 12:30:45+03:00 | Tz1
TIMETZ(6) 24HOUR ':' bytes 14 |
| timetz | 123045+-0300 | char(11)로 로드하고 insert-select문을
사용함
|
숫자 값
다음 표에서는
숫자 값을 보여줍니다.
| 데이터 유형 | 값 | 형식 절 |
|---|---|---|
| 정수 | 32767 | int1 int2
bytes 5 |
| int8 | 9123456789123456 | int2 int8 bytes 16 |
| 숫자 | 2315.59 | num1 numeric(6,2) bytes 7 |
| 숫자 | 231559 | Char(6)로 로드한 다음 삽입-선택 문을 사용합니다
(col/100)::numeric(6,2) |
| 부동 | 1.2345678 | flt1
floating bytes 9 |
| 부동 | 12345678 | Char(8)로 로드한 다음 삽입-선택 문을 사용합니다(substring(col1,1,1)||'.'||substring(col1,2,7))::float |
| 이중 실선 | 1.2345678 | flt1 double bytes 9 |
| 이중 실선 | 12345678 | Char(8)로 로드한 다음 삽입-선택 문을 사용합니다
(substring(col1,1,1)||'.'||substring(col1,2,7))::double |
논리 값
다음 표에서는
논리 값을 보여줍니다.
| 데이터 유형 | 값 | 형식 절 |
|---|---|---|
| 부울 | Y 또는 y, N 또는 n | BOOL Y_N BYTES 1 |
| 부울 | 1, 0 | BOOL 1_0 BYTES 1 |
| 부울 | T 또는 t, F 또는 f | BOOL T_F BYTES 1 |
널(NULL) 값
고정 길이 형식 파일은 일반적으로 "마술"과 같은 값을
사용하여 널(NULL)을 표시합니다. NULLIF절을 스펙에 추가하면
컬럼에서 널(NULL)을 검사할 수 있습니다. NULLIF절의 파트는
다음과 같습니다.
- 키워드 nullif
- 컬럼 참조
- 테스트 표현식
예에서처럼 field1이 날짜이고 ’99991231’ 값을
갖는 경우 널(NULL)로 간주되는 파일 스펙의 특징은
다음과 같습니다.
- nullif 스펙은 다음과 같습니다.
“nullif &=’99991231’” - 전체 스펙은 다음과 같습니다.
“fld1 date YMD'' bytes 8 nullif &=’99991231’” - 모든 형식 스펙은 NULLIF절을 지원합니다.
"문자열이 완전 일치해야 함"으로 분석되는 &=를 지원하는 것 외에,
NULLIF절은 하위 문자열 일치를 허용하는 &&=를 지원합니다. 이 절은 공백 채움이 있는 필드의 아무 곳에 문자열이 있을 수 있는 경우 유용합니다. 예를 들어,
nullif &&=’N’은 다른 표현식“ N “, “N “ 및 “ N”과
일치합니다.
다음 표에서는
널(NULL) 값을 보여줍니다.
| 데이터 유형 | 널값 | 형식 절 |
|---|---|---|
| 부울 | ' ' (1개 공백) | BOOL Y_N
BYTES 1 NULLIF &=' '(1 space) |
| 날짜 | 000000 | DATE YMD '' BYTES 6 NULLIF &='000000' |
| int | ' ' (6 공백) | INT BYTES 6 NULLIF &=' '
(6 spaces) |