首页 > 解决方案 > 如何将数据框插入到 Pandas 中的 SQl 服务器数据库中

问题描述

我想将数据框中的整行插入到熊猫的 sql server 中。

我可以使用下面的命令插入,但是,我有 46+ 列并且不想输入所有 46 列。

    server = 'server' 
    database = 'db'  
    cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER='+server+';DATABASE='+database)
    cursor = cnxn.cursor()
        for index, row in df.iterrows():
            cursor.execute("INSERT INTO HumanResources.DepartmentTest (DepartmentID,Name,GroupName) values(?,?,?)", row.DepartmentID, row.Name, row.GroupName)
        cnxn.commit()
        cursor.close() 

有没有一种方法可以在不给出列名的情况下插入整行?像这样的东西?

insert into table1
select * from df

我尝试了以下命令,但失败了,

for index, row in df.iterrows():
    cursor.execute("INSERT INTO dbo.Staging select row"
                   )
Error:('42S22', "[42S22] [Microsoft][ODBC SQL Server Driver][SQL Server]Invalid column name 'row'. (207) (SQLExecDirectW); [42S22] [Microsoft][ODBC SQL Server Driver][SQL Server]Column name or number of supplied values does not match table definition. (213)")

我不能使用 to_sql,因为我不能在 UAT 或 prod 中导入 sqlalchemy。谁能帮我这个?

标签: pythonsqlpandas

解决方案


连同下面的声明提到列名

插入 table1 (col1,col2,...conN) 从 df 中选择 col1,col2,..colN

忽略身份列


推荐阅读