拆分更新查询是否提高了性能?



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

将转换使用更少的内存使用,如果我把它分成对数据的不同部分的单独查询?

老实说,最好根本不使用这个方法,而是使用下面指定的BULK INSERT:

处理从CSV到SQL的批量插入

这很简单:

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

如果你是通过c#做的,那么你可以使用SqlBulkCopy库,或者如果你需要从命令行做,你总是可以使用BCP。

注意,你当前使用的方法速度要慢10倍:

QUOTE FROM ARTICLE:

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

最新更新