1

Customer テーブルを 50K 単位で更新する必要があります。customer テーブルのレコード数は 200 万です。

DB2コマンドプロンプトを使用して、batファイルを使用してファイルからSQLを実行しています。

私が作成した2つのファイルがあります。

1.customerupdate.bat

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

2.customer.sql

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

ここでは、コマンド プロンプトから 1 と 50000 の値を渡す必要があります。

update customer set firstname='XXXX' ここで、customercid は1から50000の間です

以下のコマンドを使用して上記のSQLを正常に実行していますが、パラメーターをSQLファイルに渡す必要があります。

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

注意:クエリを直接使用することはできません

db2 -l D:\vinu\CUSTOMERADDRESS.log -mst " update customer set firstname='XXXX' where customercid between %1 and %2" クエリは、SQL ファイルからのみ提供する必要があります。

4

2 に答える 2

1

すべての SQL を個別の SQL ファイルに入れるのではなく、ステートメントをバッチ ファイルに含めてみませんか?

DB2 CONNECT TO DBTEST USER DB2ADMIN USING XXXXXX
set start=%1
set end=%2

set FIRSTNAME=Vinu

db2 -l D:\vinu\CUSTOMERADDRESS.LOG "update customer set firstname = 'XXXXX' where customercid between %start% and %end"

これには、もう少しエラー チェックが必要になります ( -sCLP のフラグに依存して実行を停止できないため) が、機能します。

于 2014-11-08T04:55:37.057 に答える