1

我试图将我的 pandas 数据框附加到 sql server 中的现有数据表中,如下所示。我在数据中的所有列名都与数据库表完全相同。

df.to_sql(table_name,engine,schema_name,index=False,method='multi',if_exists='append',chunksize=100)

但它失败了,我收到如下错误:

IntegrityError: ('23000', "[23000] [Microsoft][ODBC Driver 17 for SQL Server]
[SQL Server]Cannot insert explicit value for identity column in table 'table_name' 
when IDENTITY_INSERT is set to OFF. (544) (SQLParamData)")

我不知道这意味着什么以及我应该怎么做才能让它发挥作用。看起来问题是IDENTITY_INSERT is set to OFF?感谢是否有人可以帮助我理解为什么以及我可以做什么。谢谢。

4

1 回答 1

0

用 Layman 的话来说,数据框由主键值组成,数据库中不允许这种插入,因为INDENTITY_INSERT is set to OFF. 这意味着主键将由数据库本身生成。另一点是主键可能在数据框和数据库中重复,您不能在表中添加重复的主键。

您有两个选择:首先:检查数据库,哪个列是您的主键列或标识列,一旦确定从您的数据框中删除该列,然后尝试将其保存到数据库中。

第二:打开 INDENTITY INSERT 并重SET IDENTITY_INSERT Table1 ON试。如果您的数据框不包含唯一的主键,您可能还会收到另一个错误。

如果在尝试这两个选项后出现错误,请使用表架构和数据框值更新您的问题df.head(5)

于 2020-06-06T01:53:43.863 回答