如何在pandas中插入数据框到SQl server数据库



我想在pandas中从数据框插入整个行。

我可以使用下面的命令插入,但是,我有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。有人能帮我一下吗?

与下面的语句一起提到列名

insert into table1 (col1,col2,…)选择col1、col2 . .列from df

忽略标识列

最新更新