2017-02-21 13 views
1

sqlalchemyでpythonを使用してデータをダウンロードし、Teradata Serverで一時ステージングテーブルを作成し、そのテーブルを永続的に作成した別のテーブルにマージしようとしていますこのデータを保存します。私はmergeは以下のような文字列であるsql = slqalchemy.text(merge)td_engine.execute(sql)を使用しています:SQLAlchemyで実行すると結果が得られないTeradata MERGE

MERGE INTO perm_table as p 
USING temp_table as t 
ON p.Id = t.Id 
WHEN MATCHED THEN 
UPDATE 
SET col1 = t.col1, 
col2 = t.col2, 
... 
col50 = t.col50 
WHEN NOT MATCHED THEN 
INSERT (col1, 
col2, 
... 
col50) 
VALUES (t.col1, 
t.col2, 
... 
t.col50) 

スクリプトがエラーなしで最後まですべての方法を実行し、SQLは、Teradataのメーカーを通じて適切に実行されますが、何らかの理由でテーブルを私はSQLAlchemyを介してそれを実行すると更新されません。しかし、私は同じpythonスクリプトからperm_tableを移植したインサートのような、異なるSQL式も実行しました。おそらく、MERGEとSQLAlchemyのコンボに固有のものがありますか?

答えて

0

トランザクションを使用せずに直接エンジンを使用しているので、INSERTなどのデータ変更操作を検出することによって動作するSQLAlchemyのバージョンautocommitに依存している可能性があります(目に見えない構成は存在しません) MERGEは検出された操作の1つではありません。お試しください。

sql = sqlalchemy.text(merge).execution_options(autocommit=True) 
td_engine.execute(sql) 
+0

イエップ。完璧に動作します。 –

関連する問題