2017-09-15 9 views
1

私はDB2ユーティリティを使用してCSVからDB2へのETLプロセスに取り組んでいます。課題は、importコマンドで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変数の値を読み取らないためです。 代わりにシステム変数を作成し、importコマンドでこれを使用しました。できます。

DB2 CLPを管理者として開き、次のコマンドを実行します。

My Sample Code

以前私は、ファイル名を取得するためのDB2変数を使用していました。

私は最後に変更されたファイルコマンド(Windowsのcmd)を使用して、同じファイル名を取得しています。これは私が期待したものです。

0

IMPORTがSQL文ではないため、RDBMS変数にアクセスすることができないため、このエラーが発生しています。それぞれのcsvファイルに対して一意のコマンド文字列を生成することも、ETLツールの機能を使用することも、任意の数のスクリプト言語を使用して各インポートのコマンド文字列を動的に作成することもできます。

0

あなたはIMPORTためのコマンド文字列を作成し、そのADMIN_CMDプロシージャにパラメータとしてそれを使用しようとすることができます。このプロシージャは、コマンドを単一の入力パラメータとしてオプションを含む文字列で指定します。

関連する問題