행위

"Mybatis 파서"의 두 판 사이의 차이

DB CAFE

(새 문서: == 모듈 설치 == <source lang=python> pip install mybatis-mapper2sql </source> == 사용법 == <source lang=python> import mybatis_mapper2sql # Parse Mybatis Mapper XML files mapp...)
 
13번째 줄: 13번째 줄:
 
statement = mybatis_mapper2sql.get_child_statement(mapper, sql_id)
 
statement = mybatis_mapper2sql.get_child_statement(mapper, sql_id)
 
</source>
 
</source>
 +
 +
=== MyBatis Xml 파싱하여 오라클 디비에 입력 처리 ===
 +
<source lang=python>
 +
#-*- 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()   
 +
</source>
 +
 +
=== MyBatis Xml 파싱하여 파일로 출력 처리 ===

2023년 5월 25일 (목) 14:55 판

thumb_up 추천메뉴 바로가기


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 파싱하여 오라클 디비에 입력 처리[편집]

#-*- 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()

2.2 MyBatis Xml 파싱하여 파일로 출력 처리[편집]