2017-09-15 13 views
1

DB2 유틸리티를 사용하여 CSV에서 DB2로 ETL 프로세스를 진행 중입니다. 도전 과제는 가져 오기 명령에서 동적 파일 이름을 db2 변수로 지정하는 것입니다. 여기 IBM DB2 IMPORT 명령에서 동적 파일 이름 경로를 추가하는 방법?

connect to database; 
CREATE OR REPLACE VARIABLE filenamePath VARCHAR(225); 
SET filenamePath= concat(concat('Z:/directory/file_',ts_fmt(current timestamp - 2 DAY,'ddmmyyyy')),'.csv'); 
import from '@filenamePath' of DEL SKIPCOUNT 1 insert into table; 
connect reset; 

여기 ts_fmt 특정 형식으로 날짜를 취득하기위한 저장 프로 시저입니다, 샘플 코드입니다. 나는

select @filenamePath FROM sysibm.sysdummy1; 

내가 같은 출력을 얻을 것이다,

Z:/directory/file_13092017.csv 

그러나 가져 오기 명령, 나는 파일을 얻고있다

찾을 수 없습니다, @filenamePath

나는 아래 문을 실행하면

의 출력을 얻고있다 오류.

답변

1

다양한 자원에서 읽은 후 db2 import 유틸리티에서 db2 variable을 사용할 수 없음을 확인합니다. 가져 오기 명령은 db2 변수 값을 읽지 않기 때문에. 그래서 대신 시스템 변수를 만들고 가져 오기 명령에서 같은 것을 사용했습니다. 그것은 작동합니다.

관리자로 DB2 CLP를 열고 다음 명령을 실행하십시오.

My Sample Code

은 이전에 내가 이름을 얻기를 위해 DB2 변수를 사용했다.

이제 마지막으로 수정 된 파일 명령 (Windows cmd)을 사용하여 동일한 파일 이름을 얻습니다. 이것은 내가 예상했던 것이다.

0

IMPORT가 SQL 문이 아니므로이 오류가 발생하므로 RDBMS 변수에 액세스 할 수 없습니다. 각 CSV 파일에 대해 고유 한 명령 문자열을 생성하거나 ETL 도구 기능을 사용할 수도 있고, 스크립트 언어를 사용하여 각 가져 오기에 대한 명령 문자열을 동적으로 만들 수 있습니다.

0

IMPORT에 대한 명령 문자열을 만든 다음 ADMIN_CMD 절차의 매개 변수로 사용할 수 있습니다. 이 프로시 저는 옵션을 단일 입력 매개 변수로 포함하여 전체 명령과 함께 문자열을 사용합니다.