2017-06-22 1 views
0

主キーとして4byteのIntergerを持つDB2テーブルが1つあります。今私はこのテーブルの行を倍増させる必要があります。私が持っている1つの方法は、テーブルをデータセットにアンロードしてキー値を操作し、すべての列をそのまま詳細に保つことです。この方法で私は行を2倍にすることができます。 私は負の値を持つキーを除いて同じ詳細で別の行を取得するように、値 '-1'で各プライマリキーを掛けることを計画しています。 私はデータ操作に関してあまり働いていません。これにSORTユーティリティを使用できますか?はいの場合は、どうですか? 参考資料はありますか?SORTユーティリティーによるデータ操作

+0

したがって、すべてのデータをファイルにダンプし、DFSORTを使用するか、すべての行を新しいキーで複製しますか? – SaggingRufus

+0

また、ソートを実際に手助けするために、私はデータレイアウトを知る必要があります – SaggingRufus

+0

@SaggingRufus yes。最後の目標は、データ操作の任意の手段によって2行カウントを持つことです。私は '-1'で複数のキー値を計画しています。それは実現可能でしょうか? – VinDesai

答えて

2

ここで私はそれをやっています。たぶん、ここで他の誰か、あなたのタスクを達成するためのより良い方法がありますが、私はこれを行うだろう:

STEP 1 COPY IEBGENERを使用して

は、一時ファイルに元のデータをコピーします。私はレコード長とスペースがその後

//COPY1 EXEC PGM=IEBGENER      
//SYSUT1 DD DSN=XX.FILE.ORIGINAL,   
//   DISP=SHR        
//SYSUT2 DD DSN=&&TEMPFILE,   
//   DISP=(KEEP,PASS),UNIT=(SYSDA,1), 
//   LRECL=50,RECFM=FB, 
//   SPACE=(CYL,(25,10),RLSE)    
//SYSPRINT DD SYSOUT=*        
//SYSIN DD DUMMY 

を必要と、キー値のすべてを変更しますDFSORTステップを書くことを推測しなければならなかった覚えておいてください。私は、この鍵があなたのファイルに最初に現れ、それが4文字であると仮定します。

STEP 2 MATH

そのステップが完了すると、ここでは、次のことができ、一時ファイルを取得し、新しいファイルキー=キー* -1

//MULTI EXEC PGM=DFSORT      
//SORTIN DD DSN=&&TEMPFILE,   
//   DISP=SHR        
//SORTOUT DD DSN=XX.FILE.MULTI,   
//   DISP=(,CATLG,DELETE),UNIT=(SYSDA,1), 
//   LRECL=50,RECFM=FB, 
//   SPACE=(CYL,(25,10),RLSE)    
//SYSPRINT DD SYSOUT=*        
//SYSIN DD * 
    SORT FIELDS=COPY 
    OUTREC FIELDS=(-1,MUL,1,4,ZD,EDIT=(STTT),SIGNS=('+','-',,)) 
/* 

を書き出します1

STEP 3 SORT

に2つのファイルを並べ替えるためにDFSORTツールを使用
+0

ありがとうございました。これは、タスクの目標を達成するためのかなり簡単で簡単な方法と思われます。 ありがとう、指導されています。 – VinDesai