pyodbc下是否有一个函数可以取代cursor.copy_expert



我使用一个打开csv文件的代码将其存储在数据库中。我使用SQL SERVER。

当文件在RAM中打开时,经过之前的处理,我们希望将其存储在数据库中。

在Postgresql下,我们使用以下代码,但我希望在SQL SERVER 下使用等效代码

# upload to db
SQL_STATEMENT = """
COPY %s FROM STDIN WITH
CSV
HEADER
DELIMITER AS ','
"""

cursor.copy_expert(sql=SQL_STATEMENT % tbl_name, file=my_file)

我不知道如何在不更改代码的情况下更改代码块

psycopg2是一个特定于Postgres的DB-API,用于维护仅在Postgres中支持的copy_expertcopy_fromcopy_to等扩展方法,而pyodbc是一个通用的DB-AAPI,可与任何ODBC驱动程序接口,包括SQL Server、Teradata、MS Access,甚至PostgreSQL ODBC驱动程序!因此,不太可能存在SQL Server特定的方便命令来替换copy_expert

但是,请考虑提交SQL Server特定的SQL命令,如BULK INSERT,该命令可以从平面文件中读取,然后运行cursor.execute。下面使用F字符串(在Python 3.6中引入(进行字符串格式化:

# upload to db
SQL_STATEMENT = (
f"BULK INSERT {tbl_name} "
f"FROM '{my_file}' "
"WITH (FORMAT='CSV');"
)
cur.execute(SQL_STATEMENT)
conn.commit()

相关内容

  • 没有找到相关文章

最新更新