私は現在、Pythonを使用して複数のSQLファイルを実行するスクリプトを作成しています。これはスクリプトを自動化するためのもので、Pythonは私のWindows 2008サーバー上にある唯一のツールです。私は1つのセットで動作するスクリプトを持っていますが、問題は他のセットが ';'で区切られたものではなく2つのステートメントを持つ場合です。ここに私のコードです:複数のステートメントを ";"で区切ってSQLファイルを実行します。 pyodbcを使用する
import os
import pyodbc
print ("Connecting via ODBC")
conn = pyodbc.connect('DSN=dsn', autocommit=True)
print ("Connected!\n")
inputdir = 'C:\\path'
cursor = conn.cursor()
for script in os.listdir(inputdir):
with open(inputdir+'\\' + script,'r') as inserts:
sqlScript = inserts.readlines()
sql = (" ".join(sqlScript))
cursor.execute(sql)
print (script)
conn.close()
print ('Run Complete!')
このコードはファイル全体を表示するように機能しますが、 ";"の前に1つの文しか実行しません。
助けがあれば助かります。
ありがとうございました。
多くのSQL APIは、単一の呼び出しで複数のステートメントを許可していません。別々の 'cursor.execute()'呼び出しでそれらを実行するだけではどうですか? – Barmar