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_expert
、copy_from
、copy_to
,pyodbc
是一个通用的 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()
我使用打开 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_expert
、copy_from
、copy_to
,pyodbc
是一个通用的 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()