从 CSV 列表中选择到表格中

CSV 文件的 Python 列表必须从 pyodbc 加载到 Access 中。我不明白如何编写 SQL 字符串来容纳一个变量,而不是显式定义 INTO TABLE 和 FROM CSV 文件。


单个 CSV 的全功能 SQL 语句如下所示:


strSQL = "SELECT * INTO [TableName] FROM 

[text;HDR=Yes;FMT=Delimited(,);" + 

"Database=C:\Path\To\Folder].first.csv;"    

是否可以修改此语句以容纳代表要导入的 CSV 的变量(即 INTO [TableName] 和 FROM 数据库)?


我了解它的某种形式与此类似:


strSQL ="SELECT * INTO ? FROM Database=?",[csv_string, csv]  

但是引用数据库的复杂 FROM 语句让我摸不着头脑。


# DATABASE CONNECTION

access_path = "C:\Path\To\Access\\DB.mdb"

con = pyodbc.connect("DRIVER={{Microsoft Access Driver 

(*.mdb,*.accdb)}};DBQ={};".format(access_path))


for csv in csv_list:


    # RUN QUERY

    strSQL = "SELECT * INTO [TableName] FROM 

    [text;HDR=Yes;FMT=Delimited(,);" + 

    "Database=C:\Path\To\Folder].first.csv;"    


    cur = con.cursor()

    cur.execute(strSQL)

    con.commit()


con.close()  


拉莫斯之舞
浏览 134回答 1
1回答

心有法竹

你为什么.format()不像上面那样使用?您可以执行以下操作:table = "TableName"database = "C:\Path\To\Folder"strSQL = """SELECT * INTO [{}] FROM[text;HDR=Yes;FMT=Delimited(,);{}].first.csv;""".format(table, database)或者您可以使用以下格式:strSQL = f"SELECT * INTO [{table}] FROM [text;HDR=Yes;FMT=Delimited(,);{database}].first.csv;"
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python