"Mybatis 파서"의 두 판 사이의 차이
DB CAFE
(→MyBatis Xml 파싱하여 오라클 디비에 입력 처리) |
|||
47번째 줄: | 47번째 줄: | ||
=== MyBatis Xml 파싱하여 파일로 출력 처리 === | === MyBatis Xml 파싱하여 파일로 출력 처리 === | ||
+ | [[category:python]] |
2024년 9월 29일 (일) 19:59 기준 최신판
thumb_up 추천메뉴 바로가기
- DBA { Oracle DBA 명령어 > DBA 초급 과정 > DBA 고급 과정 }
- 튜닝 { 오라클 튜닝 목록 }
- 모델링 { 데이터 모델링 가이드 }
1 모듈 설치[편집]
pip install mybatis-mapper2sql
2 사용법[편집]
import mybatis_mapper2sql
# Parse Mybatis Mapper XML files
mapper, xml_raw_text = mybatis_mapper2sql.create_mapper(xml='mybatis_mapper.xml')
# Get All SQL Statements from Mapper
statement = mybatis_mapper2sql.get_statement(mapper)
# Get SQL Statement By SQLId
statement = mybatis_mapper2sql.get_child_statement(mapper, sql_id)
2.1 MyBatis Xml 파싱하여 오라클 디비에 입력 처리[편집]
- mybatis_to_db.py
#-*- coding: utf-8 -*-
import cx_Oracle
import mybatis_mapper2sql
import os
import sys
# 64bit Oracle Clinet 미설치시 사용
LOCATION = r"D:\oracle_inst_64\instantclient_21_10"
os.environ["PATH"] = LOCATION + ";" + os.environ["PATH"]
#os.environ["NLS_LANG"]="AMERICAN_AMERICA.AL32UTF8"
# D:\oracle_inst_64\instantclient_21_10
mapper, xml_raw_text = mybatis_mapper2sql.create_mapper(xml="d:\\python\\sql\\"+sys.argv[1]) # 처리할 파일을 1번째 파라미터로 받음.
# statement = mybatis_mapper2sql.get_statement(mapper, result_type='raw', reindent=True, strip_comments=True) # raw형태 파일로 처리 (파일로 저장 )
statement = mybatis_mapper2sql.get_statement(mapper, result_type='list', reindent=True, strip_comments=True) # list형으로 리턴 (DB에 입력 처리 편리)
con = cx_Oracle.connect("COMMON", "1234", "111.222.333.444:49154/ORCLPDB1", encoding="UTF-8")
cursor = con.cursor()
# statement는 리스트 + 딕셔너리 형태로 구성됨 [{키:값},{키:값}] => 디비에 입력하기위해서 튜플형태로 변경 list(zip(d.keys(), d.values())
for d in statement:
cursor.executemany("INSERT INTO URP_XML_PARSE (FILE_NM,SQL_ID,SQL_TEXT) values ('"+sys.argv[1]+"',:1,:2)",list(zip(d.keys(), d.values())))
con.commit()
- 실행 방법
python mybatis_to_db.py test.xml