gpt4 book ai didi

java - SQLServerBulkCopy 错误处理

转载 作者:行者123 更新时间:2023-11-30 06:35:05 25 4
gpt4 key购买 nike

我正在研究 SQLServerBulkCopy 类来批量插入数据库。目前,我正在使用 JDBC,当我尝试执行错误插入时,我可以捕获 BatchUpdateException 以找出导致问题的行。

SQLServerBulkCopy 如何处理错误行,我可以做类似的事情吗?

最佳答案

“SQLServerBulkCopy 如何处理错误行”

如果.writeToServer遇到错误,它会抛出从服务器返回的异常,例如

com.microsoft.sqlserver.jdbc.SQLServerException: Violation of PRIMARY KEY constraint 'PK__#tmp______3213E83F719D9EEE'. Cannot insert duplicate key in object 'dbo.#tmp'. The duplicate key value is (1).

 
“如果我有 10k 行,它会执行 10k 条插入语句并在每条语句后提交吗?”

不,它正在发送 INSERT BULK 语句,然后根据 SQLServerBulkCopyOptions#setBatchSize 将批量行流式传输到服务器。默认批量大小为零 (0),这意味着它将有效地一次传输所有 10K 行。对于批量大小 >0 的情况,它将流式传输那么多行,然后重复 INSERT BULK 过程,直到复制所有行。

如果遇到错误,the documentation说:

In this first example, the bulk copy operation is non-transacted. All batches copied up to the point of the error are committed; the batch containing the duplicate key is rolled back, and the bulk copy operation is halted before processing any other batches.

 
“[实际复制的行数]在java中不可用吗?”

看来不是。 .writeToServer 返回 void,并且 SQLServerBulkCopy 对象似乎没有属性来提供该信息。

关于java - SQLServerBulkCopy 错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45336336/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com