고정 길이 형식 정의

고정 길이 형식 파일에는 형식 정의가 포함되어 있어야 합니다. 이 주제에는 일반 데이터 유형의 전형적인 고정 길이 형식 정의의 예가 나와 있습니다.

레코드 끝

고정 형식 레코드가 줄 바꾸기 문자로 끝나면 별도의 조치가 필요하지 않습니다. 줄 바꾸기는 기본 레코드 끝 구분 기호입니다. 레코드 구분자가 없으면 다음 예와 같이 작은따옴표 인용 부호를 함께 사용하십시오.
RecordDelim ''
레코드 끝 구분 기호는 마지막 레코드인 경우에도 필수입니다.

RecordDelim 옵션은 최대 8바이트의 리터럴 시퀀스를 지정하며, 일반적인 이스케이프 표현을 변환하거나 ' char(8) 과 같은 함수를 지원하지 않습니다.

레코드 길이

레코드 길이는 선택사항이지만, 형식 정의에 올바른 길이가 지정되었는지 피드백을 제공할 수 있습니다. 이 길이는 레코드 끝 구분 기호를 제외한 것입니다. 예는 다음과 같습니다.
Recordlength 72

필드 건너뛰기

다음 절은 4바이트를 건너뜁니다.
“filler char(4)  bytes 4” 
그러나, 기본 방법은 다음 예와 같이 필드를 건너뛰고 있음을 표시하는 것입니다.
“filler fld_name char(4) bytes 4”

임시 값

고정 길이 형식 파일의 임시 값에서 구분 기호가 생략되는 경우가 많습니다. 다음 표에서는 구분 기호 없이 날짜, 시간 및 시간소인을 로드하는 데 사용하는 절을 보여줍니다.
표 1. 임시 값
데이터 유형 형식 절
날짜 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문을 사용함

to_timestamp(col,'YYYYMMDDHH24MISSUS')

날짜 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문을 사용함

(substring(col1,1,2)||':'|| substring(col1,3,2)||':'||substring(col1,5,5)||':'|| substring(col1,10,2))::timetz

숫자 값

다음 표에서는 숫자 값을 보여줍니다.
테이블 2. 숫자 값
데이터 유형 형식 절
정수 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

논리 값

다음 표에서는 논리 값을 보여줍니다.
테이블 3. 논리 값
데이터 유형 형식 절
부울 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) 값을 보여줍니다.
표 4. 널 값
데이터 유형 널값 형식 절
부울 ' ' (1개 공백) BOOL Y_N BYTES 1 NULLIF &=' '(1 space)
날짜 000000 DATE YMD '' BYTES 6 NULLIF &='000000'
int ' ' (6 공백) INT BYTES 6 NULLIF &='      ' (6 spaces)