1

2,400 万行の 2 GB の csv ファイルを頻繁に SQL Server にインポートします。これをテキストとしてインポートし、SELECT xxx INTO を介して変換を実行します。

これをデータの異なるセクションの別々のクエリに分割すると、変換で使用されるメモリが少なくなりますか?

4

1 に答える 1

3

正直なところ、その方法をまったく使用しない方が良いかもしれませんが、代わりにここで指定されているように BULK INSERT を使用します。

CSV から SQL への一括挿入の処理

ただし、それは非常に簡単です。

BULK INSERT dbo.TableForBulkData
FROM 'C:\BulkDataFile.csv'
WITH
(
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
)

C# で実行している場合は、SqlBulkCopy ライブラリを使用できます。コマンド ラインから実行する必要がある場合は、いつでも BCP を使用できます。

現在使用している方法は最大 10 倍遅いことに注意してください。

記事からの引用:

従来の SQLCommand クラスを使用して、CSV ファイルからデータベースにデータを挿入できます。しかし、これは非常に遅いプロセスです。すでに説明した他の 3 つの方法と比較すると、このプロセスは少なくとも 10 倍遅くなります。CSV ファイルを行ごとにループせず、行ごとに SqlCommand を実行して、CSV ファイルから SQL Server データベースに大量の日付を挿入することを強くお勧めします。

于 2013-06-04T13:50:51.313 に答える