在Python不工作的情况下大容量插入SQL Server

在Python不工作的情况下大容量插入SQL Server,python,sql-server,etl,Python,Sql Server,Etl,我正在尝试将csv批量插入SQL server中的表中。问题是,数据与目标表的列不匹配。目标表中有几个在源文件中找不到的审核列。我找到的解决方案是将其插入到视图中。代码非常简单: from sqlalchemy import create_engine engine = create_engine('mssql+pyodbc://[DNS]') conn = engine.connect() sql = "BULK INSERT [table view] FROM '[source file p

我正在尝试将csv批量插入SQL server中的表中。问题是,数据与目标表的列不匹配。目标表中有几个在源文件中找不到的审核列。我找到的解决方案是将其插入到视图中。代码非常简单:

from sqlalchemy import create_engine
engine = create_engine('mssql+pyodbc://[DNS]')
conn = engine.connect()
sql = "BULK INSERT [table view] FROM '[source file path]' WITH (FIELDTERMINATOR = ',',ROWTERMINATOR = '\n')"
conn.execute(sql)
conn.close()
当我在SSMS中运行SQL语句时,它工作得非常好。当我试图从Python脚本内部执行它时,脚本会运行,但表中没有数据。我错过了什么


更新:原来批量插入到普通表中也不起作用。

结果是,我不得不使用pyodbc,而不是使用SQL炼金术。不知道为什么这样做有效,而另一种方式却没有。此处的示例代码:

在关闭连接之前,您需要调用commit(),否则SQL操作将在连接关闭时回滚

conn.commit()
conn.close()

检查后这对我有用。我没有将
conn.commit()显式设置为

由每个.begin()方法管理的块具有这样的行为,即在块完成时提交事务

将engine.begin()作为conn:
conn.execute(sql\u批量\u插入)