2

C#のメモリ(list<T>および)には70億行近くのデータがあります。sortedlist<T,T>このデータをSQLServerのテーブルに挿入したいと思います。これを行うには、SqlConnectionコレクションごとに異なるものを定義し、接続プールをFalseに設定します。

まず、接続モード(ExecuteNonQuery)でデータを挿入してみました。異なるコレクションのすべての挿入メソッドを同時に定義Parallel.Invokeして呼び出したとしても、速度が遅すぎて、これまでは完了できませんでした(順次挿入と同時挿入の違いを区別できませんでした)。

また、からオブジェクトを作成しようとしましたSqlDataTable。テーブルを埋めるために、コレクションからすべてのデータを1回読み取り、にデータを追加しますSqlDataTable。この場合、とを設定しSqlBatchSize=10000ます。しかし、これも非常に遅いです。SqlTimeOut=0SqlBulkCopy

どうすれば大量のデータをSQLServerにすばやく挿入できますか?

4

2 に答える 2

1

「BULK INSERT」を探します。この手法は、さまざまな RDBMS で使用できます。基本的に、レコードごとに 1 行の (テキスト) ファイルを作成し、サーバーにこのテキスト ファイルを使用するように指示します。これは私が考えることができる最速のアプローチです。そのようにして、数秒で 5000 万行をインポートします。

于 2012-12-08T17:26:37.187 に答える