使用 bcpandas 写入失败并出现错误“强制转换规范的字符值无效”

问题描述 投票:0回答:1

我正在使用

bcpandas
包通过 BCP 将 Python Pandas 数据帧写入 SQL Server 17。熊猫 1.5.1,bcpandas 2.6.0。当 BCP 写入发生时,我收到消息:

SQLState = 22005,NativeError = 0 错误 = [Microsoft][SQL Server 的 ODBC 驱动程序 17]强制转换规范的字符值无效

最终在 5 或 10 次之后,BCP 写入将中止。

我该如何解决这个问题?

sql-server pandas bcp
1个回答
0
投票

总体策略

首先限制使用例如

df.head(11)
写入的数据帧的行数,直到隔离抛出错误消息的第一行。使用
x = df.head(11).tail(1)
保存。

然后使用这个单行数据框,循环遍历列。在循环中,对于每一列,打印列名称,然后复制没有该列的数据帧,并使用 BCP 将其写入测试目标表。其中一次迭代应该成功且不会出现错误,指示哪一列存在有问题的字符。

我的具体案例

就我而言,上述策略表明出现在评论字符串中的字符

\n
是罪魁祸首。我用命令删除了它:

df['REVIEW COMMENTS'] = df['REVIEW COMMENTS'].str.replace('\n',' ')

之后BCP写入成功。

© www.soinside.com 2019 - 2024. All rights reserved.