Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 将带有熊猫的excel目录解析为带有文件名子字符串列的mssql_Sql Server_Pandas_Pandasql - Fatal编程技术网

Sql server 将带有熊猫的excel目录解析为带有文件名子字符串列的mssql

Sql server 将带有熊猫的excel目录解析为带有文件名子字符串列的mssql,sql-server,pandas,pandasql,Sql Server,Pandas,Pandasql,我有一个文件夹,其中的子文件夹与.xls文件堆叠在一起,我希望将其合并到一个大数据帧中,并将其导出到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(): r

我有一个文件夹,其中的子文件夹与.xls文件堆叠在一起,我希望将其合并到一个大数据帧中,并将其导出到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()
连接工作,从我收集的数据来看,循环运行,但没有新数据添加到数据帧
df.head()
返回一个未更改的表。有人知道我做错了什么吗

在运行create_engine语句时,我还收到了这个恼人的连接警告,尽管它不会影响任何内容:

SAWarning:未指定驱动程序名称;这是PyODBC在 使用无DSN连接“未指定驱动程序名称


感谢您的帮助!:)

如果您在
df.to_sql(…)之前添加
print(df.head(2))
,您会看到什么
?它返回目录中第一个excel文件中的两个头行。因此,它似乎没有将df的新迭代添加到表中?我还在循环底部包含一个
I=I+1
,迭代完成时它显示为零。一定是在某个地方弄乱了循环…你检查了SQ中的行数了吗执行此脚本之前和之后的L服务器表?是的,没有更改。如果在sql(…)中添加
print(df.head(2))
之前添加
df
?它返回目录中第一个excel文件中的两个头行。因此,它似乎没有将df的新迭代添加到表中?我还在循环底部包含一个
I=I+1
,迭代完成时它显示为零。一定是在某个地方弄乱了循环…你检查了SQ中的行数了吗执行此脚本前后的L服务器表?是,无更改。