pyodbc下有没有函数可以代替cursor.copy_expert

Is there a function under pyodbc that can replace cursor.copy_expert

我使用打开 csv 文件的代码将其存储在数据库中。我使用 SQL 服务器。

当文件在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_topyodbc 是一个通用的 DB-API,它与 任何 ODBC 驱动程序交互,包括 SQL Server、Teradata、MS Access,甚至 PostgreSQL ODBC 驱动程序!因此,不太可能存在 SQL 服务器特定的便捷命令来替换 copy_expert.

但是,请考虑提交 SQL 服务器特定的 SQL 命令,例如 BULK INSERT,它可以从平面文件中读取,然后 运行 cursor.execute。下面使用 F-strings(在 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()