2017-10-10 13 views
0

私はPythonでかなりうまく実行される長いSQLクエリをデータフレーム に持っていますが、何百もあるので、私のファイルを読み込み、それらを実行します。 SQL文は次のようになります。私はこれを受信した機能として、クエリを実行するとpandasデータフレームにsqlクエリを読み込んで実行する

Execute_SQL_from_a_File(QRYHOME + "qryBook" + str(BNUM) + "_" + str(IND) + ".sql", BNUM, home, conn1) 

"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() 

これは、関数を呼び出すものですがエラー:

: ('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.") 

私は1つの長い文字列としてSQLFILEを作成することによって、同じクエリを実行することができますので、私は、長エラーを取得していますなぜ私が把握カント:

"SELECT IIf(Left([Milestone_Next_Expected],4)='Proc',1, \ 
....\ 
120 lines 
....\ 
dbo.MY_data_value" 

任意の助けをいただければ幸いです!

+0

がない、あなたはそれに128以上の文字を持つ列名を持っていますか? Milestone_Nで始まる –

+0

問題のあるクエリ部分を投稿できますか?ほとんどのSQLは省略します。あなたはループしているので、ファイルの数百万のうちの1つが構文エラーを持っている可能性があります。関数内で* filename *を印刷して、トラブルシューティングが必要なものを知ってください。次にそれを開いて確認します。私はそれがそれ自身で動くことができるとは思わない。 – Parfait

+0

1.カラム名は> 32 です。2.すべてのクエリが同じ場所で破損するため、クエリの読み込み方法はかなりわかります。 3.すべてのクエリは、Pythonにハードコードされているとうまく動作します 4. 128行のクエリの最初の6行がここにあります: "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、\ ([Milestone_Next_Expected]、4)= '基金'、9,0))))))))))))))))))AS [DELETE- sortby]、\ –

答えて

0

正しい方法は次のとおりです。「\」、SQLスクリプトスクリプトは、任意の行継続記号を必要としない 1. と引用符 2に包まする必要はありません入力ファイルを読むための正しい方法は次のとおりです。

file=open(filename,'r') 
SQLfile = s = " ".join(file.readlines()) 

は今、コードが実行されると、pd.read_sql_query(SQLFILE、CONN1) を経由してエラー

関連する問題