我经常将一个包含 2400 万行的 2GB csv 文件导入 SQL Server。我将其作为文本导入,然后通过 SELECT xxx INTO 进行转换。
如果我将其拆分为对数据不同部分的单独查询,转换是否会使用更少的内存?
我经常将一个包含 2400 万行的 2GB 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 文件插入到数据库中。但这是一个非常缓慢的过程。与我已经讨论过的其他三种方式相比,这个过程至少慢了 10 倍。强烈建议不要逐行遍历 CSV 文件并为每一行执行 SqlCommand 以将大量日期从 CSV 文件插入 SQL Server 数据库。