我使用一个打开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_expert
、copy_from
、copy_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()