有时您需要使用数据表中的许多行来升级数据库,或者您拥有一个充满数据的数组,而不是将所有这些数据放在一个字符串中然后在SQL SERVER中拆分,或者不是在数据库中迭代数据表.逐行代码和更新数据库,还有其他方法吗?除了SQL SERVER 2005中的传统变量之外,还有其他类型的变量吗?
我同意John的观点,SqlBulkCopy
或者sqlxml是SQL Server 2005中的最佳选择; 请注意,在SQL Server 2008中,您还有表值参数,值得考虑; 特别是当与新的合并连接混合使用时.
请注意,如果您使用SqlBulkCopy
,我强烈建议仅批量插入临时表 - 即仅用于导入的单独表; 然后运行存储过程将数据移动到实时表.这样您就可以获得正确的日志记录,并且在运行SP时,您可以在数据库中拥有一个严格范围的事务(即,您不需要跨越所有网络IO的事务).
另一点; 如果你正在处理大量数据,你可能不想加载一个DataTable
(因为这会迫使你先缓冲内存中的所有数据); 作为替代方案,也可以编写自己的IDataReader
数据从流中提取数据(例如文件等); 看到SimpleDataReader
这里.SqlBulkCopy
将IDataReader
非常愉快地接受数据.