728x90

TABLE1에는 다음 네 개의 컬럼이 있다고 가정합니다.

  • C1 VARCHAR(30)
  • C2 INT GENERATED BY DEFAULT AS IDENTITY
  • C3 DECIMAL(7,2)
  • C4 CHAR(1)

TABLE2는 TABLE1과 같습니다. 다만, C2는 GENERATED ALWAYS 식별 컬럼입니다.

DATAFILE1에서 데이터 레코드(DEL 형식):

   "Liszt"
   "Hummel",,187.43, H
   "Grieg",100, 66.34, G
   "Satie",101, 818.23, I 

DATAFILE2에서 데이터 레코드(DEL 형식):

   "Liszt", 74.49, A
   "Hummel", 0.01, H
   "Grieg", 66.34, G
   "Satie", 818.23, I 
주:
  1. 다음과 같은 명령은 1과 2행에 대해 식별 값을 생성합니다. 이유는 식별 값이 DATAFILE1에서 이들 행에 제공되지 않았기 때문입니다. 하지만 3과 4행에는 사용자가 제공한 식별 값 100과 101이 각각 지정됩니다.
       db2 load from datafile1.del of del replace into table1 
  2. DATAFILE1을 TABLE1로 로드하여 식별 값이 모든 행에 대해 생성되게 하려면, 다음 명령 중 하나를 발행하십시오.
       db2 load from datafile1.del of del method P(1, 3, 4)
          replace into table1 (c1, c3, c4)
       db2load from datafile1.del of del modified by identityignore
          replace into table1 
  3. DATAFILE2를 TABLE1로 로드하여 식별 값이 각각의 행에 대해 생성되게 하려면, 다음 명령 중 하나를 발행하십시오.
       db2 load from datafile2.del of del replace into table1 (c1, c3, c4)
       db2 load from datafile2.del of del modified by identitymissing
          replace into table1 
  4. DATAFILE1을 TABLE2로 로드하여 100과 101의 식별 값이 3과 4행으로 할당되게 하려면, 다음 명령 중 하나를 입력하십시오.
       db2 load from datafile1.del of del modified by identityoverride
          replace into table2 
    이 경우, 1과 2행은 거부됩니다. 그 이유는 유틸리티가 사용자 제공 값을 위해 시스템이 생성한 식별 값을 대체하도록 지시했기 때문입니다. 만약 사용자 제공 값이 제시되지 않으면 식별 컬럼이 NULL이 아니기 때문에 행은 거부되어야 합니다.
  5. 식별 관련 파일 유형 수정자를 사용하지 않고 DATAFILE1이 TABLE2로 로드되면, 3과 4행은 자체의 NULL이 아닌 값을 제공하고 식별 컬럼이 GENERATED ALWAYS이기 때문에, 1과 2행은 로드되지만 3과 4행은 거부됩니다.

728x90

+ Recent posts