2

オフィスでの要件の一部として、Oracle CRM ON Demand サーバーから大量のデータを取得し、それをローカルの Oracle DB にプッシュする C# コンソール アプリケーションを作成する必要があります。

さて、多くの調査の結果、ODP.NET の Array Binding 機能を使用することにしました。私の理解では、最高のパフォーマンスが得られます。

しかし、ここに問題があります。プルする必要があるデータには、レコード/行ごとに合計 50 を超えるフィールド/列があります。そんなに多くの文字列配列を作成する必要があるのですか?

文字列配列の代わりに、50 列以上のデータ テーブルを使用して同じ (配列バインディング) を実現できますか? もしそうなら、どのように?(私はこれについて十分な調査を行いましたが、解決策を見つけることができませんでした) OracleBulkCopy クラスを使用できることは知っていますが、ここで読んだことから、それほど効率的ではなく、配列バインディングと比較するとパフォーマンスが劣っています。

また、非常に多くの配列を使用しても、アプリケーションは効率的ですか? このオプションについて同僚と話し合ったところ、アプリケーションに非常に多くの配列を含めるのは適切な設計ではないと主張したためです。

上記の懸念により、過去数日間立ち往生していました。私の問題に対する最善の解決策を教えてください。これをできるだけ早く修正する必要があります。

4

1 に答える 1

1

しかし、ここに問題があります。プルする必要があるデータには、レコード/行ごとに合計 50 を超えるフィールド/列があります。そんなに多くの文字列配列を作成する必要があるのですか?

残念ながら、はい。私はまったく同じ問題を抱えていましたが、あなたが提案したものよりも良い解決策が見つかりませんでした. DataTable は、従来の ADO.NET を使用する場合にのみ使用できるオプションです。

パフォーマンスについて心配する必要はありません。私のアプリケーションは Array Binding を使用して 1 日あたり 2,000 万行を挿入しますが、パフォーマンスやメモリの問題はありません。しかし、私はあなたの同僚に同意します。コードはきれいではありません。

于 2013-04-04T09:51:43.853 に答える