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