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

sql import db2 etl db2-luw

701 观看

3回复

969 作者的声誉

我正在使用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

但是对于导入命令,我正在获取文件未找到错误。

作者: Nithyanandhan M 的来源 发布者: 2017 年 9 月 15 日

回应 3


0

5369 作者的声誉

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

作者: mao 发布者: 2017 年 9 月 15 日

0

10693 作者的声誉

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

作者: data_henrik 发布者: 2017 年 9 月 15 日

1

969 作者的声誉

决定

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

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

我的样本代码

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

现在,我正在使用上次修改的文件命令(Windows cmd)获得相同的文件名。这是我所期望的。

作者: Nithyanandhan M 发布者: 2017 年 9 月 19 日
32x32