我正在使用
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 写入将中止。
我该如何解决这个问题?
总体策略
首先限制使用例如
df.head(11)
写入的数据帧的行数,直到隔离抛出错误消息的第一行。使用 x = df.head(11).tail(1)
保存。
然后使用这个单行数据框,循环遍历列。在循环中,对于每一列,打印列名称,然后复制没有该列的数据帧,并使用 BCP 将其写入测试目标表。其中一次迭代应该成功且不会出现错误,指示哪一列存在有问题的字符。
我的具体案例
就我而言,上述策略表明出现在评论字符串中的字符
\n
是罪魁祸首。我用命令删除了它:
df['REVIEW COMMENTS'] = df['REVIEW COMMENTS'].str.replace('\n',' ')
之后BCP写入成功。