2,400 万行の 2 GB の csv ファイルを頻繁に SQL Server にインポートします。これをテキストとしてインポートし、SELECT xxx INTO を介して変換を実行します。
これをデータの異なるセクションの別々のクエリに分割すると、変換で使用されるメモリが少なくなりますか?
2,400 万行の 2 GB の csv ファイルを頻繁に SQL Server にインポートします。これをテキストとしてインポートし、SELECT xxx INTO を介して変換を実行します。
これをデータの異なるセクションの別々のクエリに分割すると、変換で使用されるメモリが少なくなりますか?
正直なところ、その方法をまったく使用しない方が良いかもしれませんが、代わりにここで指定されているように BULK INSERT を使用します。
ただし、それは非常に簡単です。
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 データベースに大量の日付を挿入することを強くお勧めします。