2017-09-15 94 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是用於特定格式獲得日期的存儲過程。我正在輸出@filenamePath

如果我運行下面的語句,

select @filenamePath FROM sysibm.sysdummy1; 

我會得到這樣的輸出,

Z:/directory/file_13092017.csv 

但對於進口的命令,我收到文件未找到錯誤。

回答

1

從各種資源中讀取後,確認我們不能在db2導入實用程序中使用db2變量。由於導入命令不會讀取db2變量值。 所以我創建了一個系統變量,並在導入命令中使用了相同的內容。有用。

以管理員身份打開DB2 CLP並運行以下命令。

My Sample Code

以前我用DB2變量用於獲取文件名。

現在我使用上次修改的文件命令(Windows cmd)來獲取相同的文件名。這是我的預期。

0

您正在收到該錯誤,因爲IMPORT不是SQL語句,因此無法從訪問RDBMS變量中受益。您可以爲每個csv文件生成唯一的命令字符串,也可以使用ETL工具的功能,也可以使用任意數量的腳本語言爲每個導入動態創建命令字符串。

0

您可以嘗試爲IMPORT創建命令字符串,然後將其用作ADMIN_CMD過程的參數。該過程將包含選項的整個命令作爲一個字符串作爲單個輸入參數。