拆分更新查询是否可以提高性能

时间:2013-06-04 13:27:44

标签: sql sql-server csv

我经常将一个包含2400万行的2GB csv文件导入SQL Server。我将其作为文本导入,然后通过SELECT xxx INTO进行转换。

如果我将转换为对数据的不同部分的单独查询,那么转换是否会使用更少的内存?

1 个答案:

答案 0 :(得分:3)

说实话,最好不要使用该方法,而是使用此处指定的BULK INSERT:

Handling Bulk Insert from CSV to SQL

虽然很简单:

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

如果您是通过C#进行的,那么您可以使用SqlBulkCopy库,或者如果您需要从命令行执行此操作,则可以始终使用BCP。

请注意,您目前使用的方法速度最慢要慢10倍:

  

来自文章:

     

可以使用传统的SQLCommand类从CSV文件将数据插入数据库。但这是一个非常缓慢的过程。与我已经讨论过的其他三种方法相比,这个过程至少慢了10倍。强烈建议不要逐行遍历CSV文件,并为每一行执行SqlCommand,以便将大量日期从CSV文件插入SQL Server数据库。