如何在IBM DB2 IMPORT命令中添加动态文件名路径?

时间:2017-09-15 05:54:06

标签: sql import db2 etl db2-luw

我正在使用DB2实用程序从CSV到DB2进行ETL过程。挑战是在import命令中将动态文件名指定为db2变量。 以下是示例代码

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

但是对于import命令,我发现找不到文件错误。

3 个答案:

答案 0 :(得分:1)

从各种资源中读取后,确认我们不能在db2 import实用程序中使用db2变量。由于import命令不会读取db2变量值。 所以我创建了一个系统变量,并在import命令中使用了相同的变量。它有效。

以管理员身份打开DB2 CLP并运行以下命令。

My Sample Code

以前我使用DB2变量来获取文件名。

现在我使用上次修改的文件命令(Windows cmd)来获取相同的文件名。这就是我的预期。

答案 1 :(得分:0)

您收到该错误是因为IMPORT不是SQL语句,因此无法从访问RDBMS变量中受益。您可以为每个csv文件生成唯一的命令字符串,也可以使用ETL-tooling的功能,也可以使用任意数量的脚本语言为每个导入动态创建命令字符串。

答案 2 :(得分:0)

您可以尝试为IMPORT创建命令字符串,然后将其用作ADMIN_CMD过程的参数。该过程采用包含整个命令的字符串,包括选项作为单个输入参数。