我有一个文件夹,其中的子文件夹堆放着 .xls 文件,我想将这些文件合并到一个大型 DataFrame 中并将其导出到 mssql 服务器。此外,文件名包含一个时间戳 ddmmmyyyy,我需要将其提取并连接到 df。
import pandas as pd
import numpy as np
import os, pymssql, pyodbc
from datetime import datetime
from sqlalchemy import create_engine
def connect():
return pyodbc.connect(
r'DRIVER={SQL Server};'
r'SERVER=myServer;'
r'DATABASE=myDB;'
r'UID=myUser;'
r'PWD=myPwd;'
r'TDS_Version=7.3;'
r'Port=1337'
)
cnx = create_engine('mssql://', creator=connect)
cnx.connect()
# Parse files and dump to SQL
folder = "\myFolder\""
for root, dirs, files in os.walk(folder):
for file in files:
if file.endswith(".xls") and ("~" not in file):
df = pd.read_excel(root + "/" + file,header=5)
tmp = file.split("_")[2]
tmp = datetime.strptime(tmp, '%d%b%Y')
df['Created'] = tmp
df.to_sql(name="myTable", con=cnx, if_exists='append', index=False)
# Check the dumped content
sql = "SELECT * FROM myTable"
df = pd.read_sql(sql, cnx)
df.head()
连接有效,并且根据我收集的循环运行,但没有新数据添加到 DataFrame 中。df.head()
返回未更改的表。有人对我做错了什么有任何线索吗?
在运行 create_engine 语句时,我也会收到这个烦人的连接警告,尽管它不会影响任何东西:
SAWarning:未指定驱动程序名称;这是 PyODBC 在使用无 DSN 连接时所期望的“未指定驱动程序名称;
任何帮助表示赞赏!:)