SQL 병합 두 개의 별도 데이터베이스에서 두 테이블 조인

하산 J

Python SQL Alchemy 코어를 사용하여 Microsoft SQL Server에서 간단한 병합 조인 쿼리를 실행하려고합니다.

먼저 서버 관리 스튜디오를 사용하여 수행하는 방법을 설명하겠습니다.

MERGE [Database1].[Schema1].[Table1] table1
USING [Database2].[Schema2].[Table2] table2
ON table1.[Key] = table2.[Key]
WHEN MATCHED THEN   
UPDATE   
SET table1.[Column] = table2.[Column];

이것은 잘 작동하고 Column성공적으로 설정되었습니다.

그러나 파이썬을 사용하여 이것을 할 때 :

DB_TARGET = {
'drivername': 'mssql+pyodbc',
'servername': 'localhost',
'port': '1443',
'username': 'user1',
'password': 'pass',
'driver': 'ODBC Driver 13 for SQL Server',
'trusted_connection': 'yes',  
'legacy_schema_aliasing': False
}

params = urllib.parse.quote_plus("DRIVER={" + DB_TARGET['driver'] + "}" + 
                              ";SERVER=" + DB_TARGET['servername'] +
                              ";UID=" + DB_TARGET['username']+ 
                              ";PWD=" + DB_TARGET['password'])

engine1 = create_engine( DB_TARGET['drivername'] + ":///?odbc_connect=%s" % params)
metadata = MetaData(bind=engine1)
conn = engine1.connect()


q="MERGE [Database1].[Schema1].[Table1] table1 \
USING [Database2].[Schema2].[Table2] table2 \
ON table1.[Key] = table2.[Key] \
WHEN MATCHED THEN \
UPDATE \
SET table1.[Column] = table2.[Column];"

conn.execute(q)
conn.close()

아무 일도 일어나지 않고 예외가 발생 Column하지 않으며 값이 영향을받지 않습니다.

SQL Server 프로파일 러를 확인하고 쿼리가 제출되고 있는지 확인했습니다.

다음과 같이 더 간단한 쿼리를 실행 해 보았습니다.

q="SELECT * FROM TABLE1"

잘 작동합니다.

여기서 문제는 무엇입니까?

Ilja Everilä

SQLAlchemy는 기본적으로 MERGE 문을 데이터 변경 작업으로 인식하지 않으므로 .NET Framework를 사용하지 않고 연결을 사용할 때 커밋을 실행하지 않습니다 Transaction. "Understanding Autocommit"을 읽어야 합니다. 따라서 명시 적 트랜잭션을 사용하십시오.

with conn.begin() as trans:
    conn.execute(q)

또는이 명령문이 자동 커밋되어야한다고 SQLAlchemy에 알립니다.

conn.execute(text(q).execution_options(autocommit=True))

따로, 파이썬은 특별히 개행 문자를 피하고 싶지 않다면 백 슬래시없이 삼중 따옴표가있는 여러 줄 문자열을 지원합니다.

q = """MERGE [Database1].[Schema1].[Table1] table1
USING [Database2].[Schema2].[Table2] table2
ON table1.[Key] = table2.[Key]
WHEN MATCHED THEN
UPDATE
SET table1.[Column] = table2.[Column];"""

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

별도의 데이터베이스에서 두 테이블 조인

분류에서Dev

별도의 데이터베이스에서 두 테이블 조인

분류에서Dev

SAS에서 두 개의 데이터 테이블을 조건부 병합

분류에서Dev

두 개의 열 SQL 로보 두 데이터 집합을 조인

분류에서Dev

단일 저장 프로 시저에서 두 개의 서로 다른 SQL Server 2012 데이터베이스 테이블을 어떻게 병합합니까?

분류에서Dev

R : 조건에 따라 두 개의 조회 테이블이있는 테이블 조인 / 병합

분류에서Dev

SQL Server : 두 테이블의 데이터 병합

분류에서Dev

공통 인덱스에서 두 데이터 프레임 병합 (별도의 행을 만들 필요 없음)

분류에서Dev

동일한 테이블에서 두 개의 SQL 문 조인

분류에서Dev

별도의 데이터베이스에서 두 개의 서로 다른 DbContext (LINQ) 결합

분류에서Dev

두 개 이상의 테이블에 대한 SQL 조인

분류에서Dev

두 개의 다른 데이터베이스 (ms.access 및 mysql)에서 세 개의 테이블을 조인하려면 어떻게해야합니까?

분류에서Dev

왼쪽 조인을 두 개의 개별 이름으로 병합하는 방법

분류에서Dev

SQL 두 개의 왼쪽 조인은 첫 번째 테이블의 데이터 만 생성합니다.

분류에서Dev

Postgres 데이터베이스의 테이블에있는 단일 JSON 열에서 두 키 조합 쿼리

분류에서Dev

SQL Oracle SQL Developer에서 개별 테이블의 두 열을 하나로 결합

분류에서Dev

하나의 SQL 쿼리에서 두 테이블의 두 열 결합 (병합)

분류에서Dev

PHP / SQL-두 데이터베이스의 두 테이블에서 데이터를 선택하고 시간별로 정렬

분류에서Dev

두 개의 개별 PostgreSQL 데이터베이스에서 검색

분류에서Dev

두 개의 개별 PostgreSQL 데이터베이스에서 검색

분류에서Dev

laravel eloquent로 두 개의 데이터베이스 테이블 조인

분류에서Dev

Athena에서 서로 다른 두 데이터베이스의 두 테이블을 조인 할 수 없습니다.

분류에서Dev

테이블의 각 행에서 개별적으로 두 개의 조인을 수행합니까?

분류에서Dev

SQL은 타임 스탬프에서 두 개의 다른 테이블을 조인합니다.

분류에서Dev

연결된 키를 기반으로하는 조인을 사용하지 않고 Power Pivot에서 두 개의 개별 테이블의 데이터 결합

분류에서Dev

두 개의 SQL 테이블 조인 및 그룹화

분류에서Dev

두 데이터베이스 테이블의 필드 병합 / 결합

분류에서Dev

명확한 순서를 따르도록 두 테이블의 데이터 병합

분류에서Dev

PYTHON-날짜 인덱스에서 두 개의 데이터 프레임 병합

Related 관련 기사

  1. 1

    별도의 데이터베이스에서 두 테이블 조인

  2. 2

    별도의 데이터베이스에서 두 테이블 조인

  3. 3

    SAS에서 두 개의 데이터 테이블을 조건부 병합

  4. 4

    두 개의 열 SQL 로보 두 데이터 집합을 조인

  5. 5

    단일 저장 프로 시저에서 두 개의 서로 다른 SQL Server 2012 데이터베이스 테이블을 어떻게 병합합니까?

  6. 6

    R : 조건에 따라 두 개의 조회 테이블이있는 테이블 조인 / 병합

  7. 7

    SQL Server : 두 테이블의 데이터 병합

  8. 8

    공통 인덱스에서 두 데이터 프레임 병합 (별도의 행을 만들 필요 없음)

  9. 9

    동일한 테이블에서 두 개의 SQL 문 조인

  10. 10

    별도의 데이터베이스에서 두 개의 서로 다른 DbContext (LINQ) 결합

  11. 11

    두 개 이상의 테이블에 대한 SQL 조인

  12. 12

    두 개의 다른 데이터베이스 (ms.access 및 mysql)에서 세 개의 테이블을 조인하려면 어떻게해야합니까?

  13. 13

    왼쪽 조인을 두 개의 개별 이름으로 병합하는 방법

  14. 14

    SQL 두 개의 왼쪽 조인은 첫 번째 테이블의 데이터 만 생성합니다.

  15. 15

    Postgres 데이터베이스의 테이블에있는 단일 JSON 열에서 두 키 조합 쿼리

  16. 16

    SQL Oracle SQL Developer에서 개별 테이블의 두 열을 하나로 결합

  17. 17

    하나의 SQL 쿼리에서 두 테이블의 두 열 결합 (병합)

  18. 18

    PHP / SQL-두 데이터베이스의 두 테이블에서 데이터를 선택하고 시간별로 정렬

  19. 19

    두 개의 개별 PostgreSQL 데이터베이스에서 검색

  20. 20

    두 개의 개별 PostgreSQL 데이터베이스에서 검색

  21. 21

    laravel eloquent로 두 개의 데이터베이스 테이블 조인

  22. 22

    Athena에서 서로 다른 두 데이터베이스의 두 테이블을 조인 할 수 없습니다.

  23. 23

    테이블의 각 행에서 개별적으로 두 개의 조인을 수행합니까?

  24. 24

    SQL은 타임 스탬프에서 두 개의 다른 테이블을 조인합니다.

  25. 25

    연결된 키를 기반으로하는 조인을 사용하지 않고 Power Pivot에서 두 개의 개별 테이블의 데이터 결합

  26. 26

    두 개의 SQL 테이블 조인 및 그룹화

  27. 27

    두 데이터베이스 테이블의 필드 병합 / 결합

  28. 28

    명확한 순서를 따르도록 두 테이블의 데이터 병합

  29. 29

    PYTHON-날짜 인덱스에서 두 개의 데이터 프레임 병합

뜨겁다태그

보관