1

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

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

4

1 回答 1

3

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

处理从 CSV 到 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 数据库。

于 2013-06-04T13:50:51.313 回答