cx_oracleを介していくつかの.sqlファイルを実行する際に実際の問題が発生しています。たとえば、Oracle Developerを実行すると、以下のtest_table2.sqlが完全に実行されます。cx_oracleを使用してPython 2.7で複数のクエリを使用してSQLファイルを実行する
declare
c int;
begin
select count(*) into c from user_tables where table_name = upper('TEST2');
if c = 1 then
execute immediate 'drop table TEST2';
end if;
EXECUTE IMMEDIATE 'CREATE TABLE MURRAYLR.test2 as
select * from Dans_Table';
EXECUTE IMMEDIATE'CREATE TABLE MURRAYLR.test1
(customer_id number(10) NOT NULL,
customer_name varchar2(50) NOT NULL,
city varchar2(50)
)';
end;
Pythonコードは通常、単純なクエリで機能しますが、既存のテーブルスクリプトのチェックをしようとすると、エラーが発生します。 ORA-06550:行1、列15: PLS-00103:遭遇
パイソン2.7.11コード
import sys
import cx_Oracle
connection = cx_Oracle.connect('user','password','serv')
cursor = connection.cursor()
filename="C:\Users\desktop\Test_table2.sql"
f = open(filename)
full_sql = f.read()
sql_commands = full_sql.replace('\n', '').split(';')[:-1]
for sql_command in sql_commands:
cursor.execute(sql_command)
connection.close()
エラーメッセージ
cursor.execute(sql_command) DatabaseError下記参照次のいずれかを予期している場合は、「ファイルの終わり」を示すシンボル:
= =。 (@%; null以外のデフォルトの文字)
フランク、私はあなたのソリューションを理解していません。あなたは私にコードを渡してくれますか? –
@LeeMurray私の更新答えを見てください。私はそれをテストすることができませんでしたが、それは動作するはずです(少し修正して、私は最近Pythonをあまり行っていません) –