我经常将一个包含2400万行的2GB csv文件导入SQL Server。我将其作为文本导入,然后通过SELECT xxx INTO进行转换。
如果我将转换为对数据的不同部分的单独查询,那么转换是否会使用更少的内存?
答案 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数据库。