mariadb mysql 특정 스키마 테이블 ddl 추출 프로그램 배포
안녕하세요.
sTricky 입니다. 저 sTricky가 오늘부터 작은 목표를 하나 만들었습니다.
ETL을 하는데 있어서 좀 더 편하고, 공짜로 하실수 있도록 간단한 툴을 파이썬으로 제작 해보는건데요.
처음부터 완벽하고 거창하게 시작 할 수는 없어서, step by step 으로 나가보도록 하겠습니다. 그래서, 오늘 처음으로 mariadb나 mysql에서 특정 스키마의 테이블 ddl을 추출 하는 프로그램을 작성했고, 공개 하도록 하겠습니다.
필요하신분들은 가져다가 쓰시고, 저보다 파이썬이나 DB에 더 능숙 하신분들은 프로그램 코드도 공개를 하니, 수정해서 쓰시면 되겠습니다. 주의 하실점은 본인보다 못했다고 욕하기는 없습니다.
그리고, 이걸 바탕으로 진화(?) 하신 코드를 작성하게 되시면 저한테도 함께 공유 해주시면 감사하겠습니다.
프로그램 코드
잘 아시겠지만, DB접속 계정, 비밀번호, IP등이 필요하기 때문에 프로그램 실행시 변수로 받도록 작성을 하였습니다. 그래서 입력 아규먼트가 5개나 됩니다.
입력 아큐먼트 정보는 아래와 같습니다.
* DB서버 IP
* DB서버 port
* DB계정
* DB계정 비밀번호
* DDL 백업 스키마 명
이렇게 총 5개의 정보를 입력하면서 프로그램을 실행 하시면 입력하신 스키마에 생성된 모든 table DDL이 윈도우 download 폴더에 table_ddl.sql 이란 파일로 저장이 될 것 입니다.
# import library
import pymysql
from pathlib import Path
import sys
# argvs
db_ip = sys.argv[1]
db_port = int(sys.argv[2])
db_acct = sys.argv[3]
db_pw = sys.argv[4]
db_schema = sys.argv[5]
# 개발 DB connect
conn_a = pymysql.connect(host=db_ip, port= db_port, user = db_acct, password=db_pw, db = 'mysql',charset = 'utf8')
curs_a = conn_a.cursor(pymysql.cursors.DictCursor)
# download 경로
downloads_path = str(Path.home() / "Downloads")
######################################################################
# tables
######################################################################
sql = "select TABLE_NAME from information_schema.TABLES where TABLE_SCHEMA = '" + db_schema + "'"
curs_a.execute(sql)
tables = curs_a.fetchall()
# 테이블 목록을 리스트로 저장
acc_tables = list(tables)
# 테이블 수 변수에 저장
tables_cnt = len(tables)
# ddl 파일 초기화
sql_file = open(downloads_path + "\\table_ddl.sql", "w")
sql_file.write("")
sql_file.close
sql_file = open(downloads_path + "\\table_ddl.sql", "a")
for i in range(1,tables_cnt):
# db에서 ddl 추출
ddl_sql = "show create table " + db_schema + "." + tables[i]['TABLE_NAME']
curs_a.execute(ddl_sql)
table_ddl = curs_a.fetchall()
table_ddl = list(table_ddl)
# 파일 열어서 저장
sql_file.write(table_ddl[0]['Create Table'])
sql_file.write("; \n")
sql_file.close
라인별 코드 설명은 따로 하지 않겠습니다. 궁금 하신 분들은 댓글로 문의 해주세요.
유용하게 잘 쓰시기 바라겠습니다.
실행 방법
프로그램 실행방법은 아래 프로그램을 다운로드 받으시거나, 위 코드를 그대로 복사해서 쓰시면 됩니다.
파이썬 코드니 뭐니 그런거 잘 모르시면 아래 프로그램을 다운로드 받으세요.
뭔가 웹에서 exe 파일 다운로드 받는게 겁나시는 분들은 위 코드를 이용하시구요.
뭐, 제 블로그 보시면 아시겠지만, 이상한 프로그램 심지도 않구요. 그럴 능력도 안됩니다 ㅎㅎ
아무튼, 다운로드 폴더로 다운 받았다고 가정을 한다면, 아래와 같이 윈도에서 cmd를 실행하시고 프로그램명과 입력 아규먼트를 써서 실행 하시면 됩니다.
table_ddl.exe 1.2.3.4 3306 dba_acct passwod schema_name
이렇게 프로그램이 문제없이 실행이 되었으면 다운로드 폴더로 이동 해보세요.
그럼 거기 table_ddl.sql이 있을겁니다.
이걸 시작으로 앞으로 하나씩 발전시켜 나가도록 하겠습니다.
많은 호응 부탁드리겠습니다.
감사합니다!!!!
by.sTricky
'Database > mariaDB administrator' 카테고리의 다른 글
mariadb partition table의 종류와 선택 기준 주의할 점 (0) | 2021.07.02 |
---|---|
[mysql 독학] 독학으로 예제따라 익히는 mysql/mariadb SQL 입문서 출간 (47) | 2021.06.03 |
[mariadb] binary log 안전하게 삭제하는 방법 (0) | 2021.05.27 |
mysql binary log 복구 방법 & create update delete insert alter 명령어 추출 방법 (2) | 2021.04.22 |
replace into & insert into 차이점, 주의할점이 무엇인지 쉽고 간단하게 확인하기 (3) | 2021.03.18 |