【发布时间】:2009-05-13 14:17:49
【问题描述】:
我正在使用 SSIS 包(不是我构建的)将 CSV 文件批量插入到 SQL Server 2005 中
我正在运行 SQL Profiler 并看到插入语句为:
insert bulk [dbo].[stage_dht]( ..... )
但是该语句中没有 FROM 子句,所以我很好奇它是如何获取数据的,这种所谓的快速加载是将数据批量写入 SQL 的最佳方式吗?
【问题讨论】:
标签: sql-server ssis
我正在使用 SSIS 包(不是我构建的)将 CSV 文件批量插入到 SQL Server 2005 中
我正在运行 SQL Profiler 并看到插入语句为:
insert bulk [dbo].[stage_dht]( ..... )
但是该语句中没有 FROM 子句,所以我很好奇它是如何获取数据的,这种所谓的快速加载是将数据批量写入 SQL 的最佳方式吗?
【问题讨论】:
标签: sql-server ssis
是的,SSIS 批量插入任务使用与 BULK INSERT 命令相同的下划线功能。
您很可能会在 SQL Profiler 中看到差异,因为 Bulk Insert 任务将直接使用带下划线的 COM 对象(支持批量插入),而不是简单地作为 T-SQL 命令的 GUI 包装器。因此,我猜测它不是指定 FROM ,而是将打开的 IO 流指针传递给 COM 对象。
批量插入几乎是将大量数据加载到 SQL Server 中的最快方式,因为它在进程内运行,“共享相同的内存地址空间。因为数据文件是由 SQL Server 进程打开的,所以数据不是在客户端进程和 SQL Server 进程之间复制”。1
但是,如果文件与 SQL Server 是否在同一台机器上,性能会有所不同。
【讨论】: