如何使用CLP将值从bat文件传递到DB2sql文件



我需要以50K为块更新Customer表,Customer表中的记录数为200万。

我使用DB2命令提示符从使用bat文件的文件中执行sql。

我创建了两个文件。

1.customupdate.bat

DB2 CONNECT TO DBTEST USER DB2ADMIN USING XXXXXX
set start=%1
set end=%2
db2 -l D:vinuCUSTOMERADDRESS.log  -mstf D:vinuCUSTOMERADDRESS.sql 

2.customer.sql

update customer set firstname='XXXX' where customercid between 1 and 50000

在这里,我需要从命令提示符传递1和50000值

更新客户集firstname='XXXX',其中customerid介于150000之间

我使用下面的命令成功地执行了上面的sql,但是我需要将参数传递到sql文件。

C: \Program Files\IBM\SQLLIB\BIN>customerupdate.bat 1 50000

请注意:我不能像那样直接使用查询

db2-l D:\vinu\CUSTOMERADDRESS.log-mst"更新客户集firstname='XXXX',其中customerid在%1和%2之间"查询只能从sql文件中提供。

使用传统的CLP无法做到这一点,但如果使用CLPPlus,这是可能的。

customer.sql:中

update customer set firstname='XXXX' where customercid between &1 and &2;
exit

调用CLPPlus(它使用JDBC连接):

clpplus -nw db2admin/password@hostname:port/dbtest @customer.sql 1 50000

CCD_ 1和CCD_。

与其将所有SQL都放在一个单独的SQL文件中,为什么不将语句包含在批处理文件中呢?

DB2 CONNECT TO DBTEST USER DB2ADMIN USING XXXXXX
set start=%1
set end=%2
set FIRSTNAME=Vinu
db2 -l D:vinuCUSTOMERADDRESS.LOG "update customer set firstname = 'XXXXX' where customercid between %start% and %end"

这将需要更多的错误检查(因为CLP不能依赖-s标志来停止执行),但它会起作用。

相关内容

  • 没有找到相关文章

最新更新