OS 환경 : Oracle Linux 7.6 (64bit)
SW 환경 : VS Code 1.87.2, Python 3.12.2
DB 환경 : Oracle Database 19.3.0.0
방법 : 오라클 19c 파이썬을 이용해 여러개 DB 데이터 조회 후 엑셀 파일로 저장
파이썬환경에서 여러대의 오라클 DB에 접속해서 데이터를 가져온 뒤 하나의 엑셀로 저장하는 방법을 설명함
사전 설정 참조 :오라클 19c 파이썬을 이용해 데이터 조회 후 엑셀 파일로 저장( https://positivemh.tistory.com/1065 )
multi_ora_to_xls.py 파일 생성 후 실행
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
multi_ora_to_xls.py
import oracledb
import xlsxwriter
import datetime
# DB Connection Info
db_connections = [
{'un': 'system', 'pw': 'oracle', 'cs': '192.168.137.20/oracle19', 'port': 1521},
{'un': 'system', 'pw': 'oracle', 'cs': '192.168.137.19/oracle19', 'port': 1521}
]
# Set Output Filename
current_time = datetime.datetime.now()
formatted_time = current_time.strftime("%Y%m%d_%H%M")
output_filename = f'C:/tmp/output_{formatted_time}.xlsx'
# Create Excel
workbook = xlsxwriter.Workbook(output_filename)
worksheet = workbook.add_worksheet()
# Extract Data
row_index = 0
for db_info in db_connections:
un = db_info['un']
pw = db_info['pw']
cs = db_info['cs']
port = db_info['port']
with oracledb.connect(user=un, password=pw, dsn=cs, port=port) as connection:
with connection.cursor() as cursor:
sql = "SELECT * FROM v$instance"
cursor.execute(sql)
# Add Column Name(One Column name)
if row_index == 0:
columns = [i[0] for i in cursor.description]
for col, column_name in enumerate(columns):
worksheet.write(row_index, col, column_name)
row_index += 1
# # Add Column Name(Multi Column Name)
# columns = [i[0] for i in cursor.description]
# for col, column_name in enumerate(columns):
# worksheet.write(row_index, col, column_name)
# row_index += 1
for row in cursor:
for col, value in enumerate(row):
worksheet.write(row_index, col, value)
row_index += 1
# Close and Save Excel
workbook.close()
print(f"Excel file '{output_filename}' has been created successfully.")
결과
Excel file 'C:/tmp/output_20240401_2114.xlsx' has been created successfully.
|
엑셀 파일 확인
결과값이 하나의 파일에 저장됨
그리고 컬럼이름은 한번만 나옴
위 스크립트에서 Add Column Name(Multi Column Name) 부분을 주석해제하고 Add Column Name(One Column name) 부분을 주석처리한 뒤 실행하면 컬럼이 DB 갯수만큼 여러번 반복되어 출력됨
multi_ora_to_xls.py 파일 주석 변경 후 실행
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
multi_ora_to_xls.py
(생략)
# Add Column Name(One Column name)
#if row_index == 0:
# columns = [i[0] for i in cursor.description]
# for col, column_name in enumerate(columns):
# worksheet.write(row_index, col, column_name)
# row_index += 1
# Add Column Name(Multi Column Name)
columns = [i[0] for i in cursor.description]
for col, column_name in enumerate(columns):
worksheet.write(row_index, col, column_name)
row_index += 1
(생략)
결과
Excel file 'C:/tmp/output_20240401_2126.xlsx' has been created successfully.
|
엑셀 파일 확인
컬럼이 반복되어 출력됨
참조 :
https://positivemh.tistory.com/1065
'Python > Script' 카테고리의 다른 글
오라클 19c 파이썬을 이용해 여러개 DB 데이터 조회 후 엑셀 파일로 저장(pandas) (0) | 2024.04.04 |
---|---|
오라클 19c 파이썬을 이용해 데이터 조회 후 엑셀 파일로 저장 (2) | 2024.04.01 |
오라클 19c 파이썬을 이용해 접속 및 쿼리 (0) | 2024.04.01 |