2017-02-21 9 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은 테라 데이타 Studio를 통해 제대로 실행하지만 어떤 이유로 테이블에 대한 SQLAlchemy를 통해 실행할 때 업데이트되지 않습니다. 그러나 동일한 파이썬 스크립트에서 삽입 된 perm_table 삽입과 같은 다른 SQL 표현식도 실행했습니다. 어쩌면 MERGE 및 SQLAlchemy 콤보에 특정한 것이 있습니까?

답변

0

트랜잭션을 사용하지 않고 직접 엔진을 사용하고 있으므로 SQLAlchemy의 버전 autocommit을 사용하면 INSERT 등의 데이터 변경 작업을 감지하여 작동 할 수 있습니다 (사용자가 볼 수없는 구성은 제외). MERGE는 탐지 된 작업 중 하나가 아닙니다. 시도해보십시오.

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

예. 완벽하게 작동합니다. –