2017-06-07 3 views
1

データの移行にSqlDataReaderを使用しています。一度に宛先に挿入するレコードの数を増やすにはどうすればよいですか?C#でSqlDataReaderのバッファサイズを変更する方法は?

+1

しかし... sqldatareaderは* do *を挿入していません:そうです:あなたは挿入のために何を使用していますか? sqlbulkcopyのようなものであれば、バッチサイズを調整する方法は複数あります(バッファサイズ)。最も重要なのは '.BatchSize'です。 –

+0

正直言ってわかりません。 – CHS

+0

私は、レコードを読み込むためにレコードを宛先(データベース=ソース、クライアント=宛先)に「挿入」するために使用するバッファを増やしたいと思っています。私は確信していませんが、私はあなたがプログラムで、そしてデータベースドライバ(通常は8kilobytes)(https://stackoverflow.com/a/1383961/284240)で変更できないネットワークバッファーに依存していると思います。 –

答えて

0

一度に宛先に挿入するレコードの数を増やしたいと考えています。

次に、このSqlDataReaderとは無関係です、そしてあなたは、挿入のために使っているものは何でもツールを見てする必要があります。 SqlBulkCopyを使用している場合は、.BatchSizeを変更するだけで簡単です。他のメカニズムを使用している場合は、具体的にする必要があります。たとえば、SPを使用して一度に1行しか処理しない挿入を実行する場合は、MARSを使用してasyncの操作を重複させることがあります。私はこのタイプのシーケンシャルな固定深度オーバーラップのためのユーティリティメソッドを持っています(非常にとは異なり、たとえばとは異なり、固定されたmax-DOPでさえ同じです)。 TDSベースのテーブルパラメータを介して動作する挿入を使用している場合は、操作を呼び出す前にそのデータをローカルにバッファリングしてください。 EFなどのORMを使用している場合:ORMの挿入文書を参照してください。

しかし、強調する:一つのことはではありませんこれは、データリーダーです。

+0

実際の要件は、SQL ServerからPostgresにデータを移行することです。コードはsqldatareaderを使用してソースからデータを読み込み、npgsqlを使用してdestination.itsにデータを挿入することで、sqldatareaderはデフォルトで8KBのデータを保持できます。どのようにデータsqldatareaderが一度に扱うことができるか知っていて、それを増やすことは可能です...すべてがネットワークではなく、単一のサーバーで行われます。 – saju

関連する問題