在 MSSQL 中处理 315 个批次后,BULK INSERT 命令在没有任何 error/exception 的情况下静默退出

BULK INSERT command is silently exiting without any error/exception after processing 315 batches in MSSQL

我将相当大的数据集(十亿行)存储到 MSSQL Server 2008 R2 table 中。使用 BCP 命令将数据推送到 table。 但是BCP只是在处理完315 batches后静默退出,我用different batch size (1 record per batch, 100 record per batch, 1000 record per batch, 1000000 record per batch)测试过。 但是不依赖batch size,处理完就退出315 batches.

正在使用 python pyodbc 执行 BCP 命令。

我不知道为什么会这样。我应该采取什么方法来解决这个问题?对此的支持将非常有帮助。

  • 问题与数据库游标对象有关。
  • 这背后的根本原因是数据库游标对象已满,我不得不像遍历游标对象一样进行分页。
  • 因为游标是我无法捕获存储过程的最新输出。在我的例子中,我的光标在 315 之后变满了(来自存储过程的 return 语句。插入语句的示例输出,如 10 rows inserted)。

示例python代码

import pyodbc

conn = pyodbc.connect(username, password)

query = "a stored procedure"

# Execute query and get cursor object
cursor = conn.execute(query)

# Clearing cursor
while cursor.nextset():
    result  = cursor.fetchall() if cursor.description else None