おやすみなさい。私は、代理キー状態ファイルを読み込んで、現在の値と変更方法を取得する方法を見つけようとしています。問題は、データベースが絶えずリフレッシュされていることです。テーブルから最大値を取得し、代理キー状態ファイルを設定できるメカニズムが必要です。代理キー生成プログラムの状態ファイルは、別のプログラム言語からファイルを読み込む方法はありますか?
DataStage Designerツールを使用して読むことができるデータセット(.ds)ファイルとは異なります。私はそれをバイナリファイルとして読む小さなC#アプリケーションを作ろうとしました。さまざまな記事は、それが符号なし64ビット整数であることを説明しています。それでも私がそれを読もうとすると、乱数のセットが返されます。それは1で始まり、999で終わる数字が続き、それが繰り返されます。私はビットコンバータクラスでそれを読むことを試みたが運もない。
私が見た唯一の解決策は、http://it.toolbox.com/blogs/infosphere/datastage-8-tutorial-surrogate-key-state-files-17403で説明されているように、データベースから最大数を取得して代理キーを作成する並列ジョブまたは順次ジョブを作成することです。
私はコードで変更しようとする最初の人ではなく、それを行う方法があれば興味がありました。
アップデート2016年10月19日のDataStage 8.7 C#BinaryReader.ReadUInt64、BinaryReader.ReadInt64とBitConverter.ConvertToUInt64で試してみました
を使用して:部分的な答えは、それはバイナリファイルとして読み取ることができるということである 。 8バイトの4つのセットに分割されています。この(あなたがバイナリエディタでそれを見ることができます。
01 00 00 00 00 00 00 00
00 00 00 00 00 00 00 05
00 00 00 00 00 00 00 08
00 00 00 00 00 00 00 08
私は増分番号(1、5、などだと思う最初のセット)
第二セットは、初期値
あるような何か第三セットは、私が割り当てるためのバッチの終わりだと思う
第4セットを割り当てるための次の番号である。あなたは10×10バッチを行っている場合は、第三、私はそれをどのように考えるか10で、第四が20であるか、つまり、作品。
コードで読み込むには、バイナリリーダーで読み込み、UINT64に変換する8バイトのセットを取得する必要があります。
私はそれらが何を意味するかわからないので、質問はまだ立っています。
解決策を理解するには、件名をもっと読む必要があります。それはすでに作られているので、私はそれが必要です。私はちょうどリフレッシュがあるときに不一致のサロゲートキーの問題を修正しようとしています。それでもあなたの数式は役に立ちます。 – ThorDivDev