![]() |
1
4
对于数百万行的插入,我使用了大容量插入,将数据写入SQL Server实例可以访问的csv文件。这比通过JDBC进行的任何类型的插入都要好,但是以降低灵活性为代价。对于较小的行数,使用JDBC
根据您的要求,您可能必须将所有这些都放在一个事务中,或者如果不需要对整个数据集提供完整的酸保证,您可能能够将这些事务拆分为多个事务。 这是一篇讨论的文章 bulk insert of XML . 我没有可以得出任何结论的数据,但我想批量插入原始行数据会更快,因为不需要OpenXML转换。当然,如果您的数据已经是XML格式的,那么这是有意义的,但是如果不是,那么使用表格式数据可能是最简单的,也可能是最具性能的。 |
![]() |
2
2
XML将是更好的IMO方法,尽管我还建议您创建一个存储过程来处理实际的处理,而不是运行一个内联查询。 基本上,将XML数据作为单个参数发送,然后在sp内部运行insert into select语句,从XML中选择一些表或表组。
这将创建一个具有单列“thing_id”的表。现在你要做的就是
您可以使用一个插入来处理XML中的任意多行。 |
![]() |
3
1
由于所有的网络延迟,一次插入一个插件的速度将不必要地变慢。 一种更好的执行方式是在一次网络往返中将多个事务作为单个批处理发送,并将它们作为单个工作单元提交。 如果您有非常多的记录,那么您可能需要考虑一种混合方法:循环处理多个批,并将它们作为工作单元提交。这将执行,即使对于大型事务也是如此,并且在提交整个事务之前,您不会强制数据库维护大型回滚日志。 如果您的XML解决方案意味着将原始XML流作为CLOB插入,那么我不喜欢。一旦它在数据库中,您将如何查询它?您将失去SQL提供给您的一切:查询能力。如果您存储原始XML,那么您所能做的就是为特定值使用xpath。更新意味着替换整个CLOB。 |
![]() |
Duvan · 将逗号(,)替换为点(.)[副本] 2 年前 |
![]() |
Mateen Bagheri · 选择表的计数并选择其自身 2 年前 |
![]() |
SoT · SQL Server中求和函数的工作方式 2 年前 |
![]() |
NKAT · 将列值聚合到列表中会产生错误 2 年前 |
![]() |
deanpillow · 返回两列中有一个匹配值的记录 2 年前 |
![]() |
snowflakes74 · 在Dapper中异步查询多个结果 2 年前 |