我有一个长期的SQL查询,在Python中运行得很好,进入数据框架 但我有数百个,所以我尝试创建一个读取我的文件并执行它们的函数。 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"
非常感谢任何帮助!
答案 0 :(得分:0)
正确的方法是: 1. sql脚本脚本不需要任何行继续符号," \" 并且不需要用引号括起来 2.读取输入文件的正确方法是:
file=open(filename,'r')
SQLfile = s = " ".join(file.readlines())
现在,代码执行时,通过pd.read_sql_query(SQLfile,conn1) 没有错误