0
我有一个长期存在的SQL查询,在Python中运行得很好,进入数据框 但我有数百个,所以我尝试创建一个函数来读取我的文件和执行它们。 SQL语句是这样的:阅读并执行到熊猫数据框的SQL查询
"SELECT IIf(Left([Milestone_Next_Expected],4)='Proc',1, \
....\
120 lines
....\
dbo.MY_data_value"
这是函数
def Execute_SQL_from_a_File(filename,home,conn1):
FORMAT1 = '%Y%m%d%H%M'
fd = open(filename, 'r')
sqlFile = fd.read()
fd.close()
KIC53 = pd.read_sql(sqlFile, conn1)
f_out = home + out1 + ".xls"
writer = pd.ExcelWriter(f_out)
KIC53.to_excel(writer,f_out)
writer.save()
这就是调用该函数:当我运行的功能,我收到这个查询
Execute_SQL_from_a_File(QRYHOME + "qryBook" + str(BNUM) + "_" + str(IND) + ".sql", BNUM, home, conn1)
错误:
: ('42000', "[42000] [Microsoft][ODBC SQL Server Driver][SQL Server]The
identifier that starts with 'SELECT
IIf(Left([Milestone_Next_Expected],4)='Proc',1,
\\\nIIf(Left([Milestone_Next_Expected],4)='Subm',2,
\\\nIIf(Left([Milestone_N' is too long. Maximum length is 128.")
我无法弄清楚,为什么我得到的长度误差,因为我可以运行相同的查询,通过创建SQLFILE作为一个长字符串:
"SELECT IIf(Left([Milestone_Next_Expected],4)='Proc',1, \
....\
120 lines
....\
dbo.MY_data_value"
任何帮助将不胜感激!
你有,在有超过128字符列名?从Milestone_N开始 –
您可以发布那个有问题的查询部分吗?你省略了大部分的SQL。由于您正在循环,也许*数百*文件之一有语法错误。尝试在函数中打印*文件名*,以便知道哪一个需要进行故障排除。然后打开它并检查。我怀疑它可以独立运行。 – Parfait
1.列名都不是> 32 2.所有查询都在同一个地方中断,所以我相当肯定它是以查询的方式读取的。 3.所有查询在硬编码为python时运行正常 4.以下是128行查询的前六行: “SELECT IIf(Left([Milestone_Next_Expected],4)='Proc',1,\ IIf(Left([Milestone_Next_Expected],4)='Subm',2,\ IIf(Left([Milestone_Next_Expected],4)='Cond',3,\ IIf Resu',4,\ IIf(Left([Milestone_Next_Expected],4)='Fund',9,0))))))))AS [DELETE- sortby] –