[python] 파이썬을 이용한 데이터베이스 ETL 작업

데이터베이스 ETL(Extract, Transform, Load) 작업은 다양한 데이터 소스에서 데이터를 추출하여 변형한 후 다른 데이터베이스에 로드하는 작업입니다. 이러한 작업은 데이터 통합, 데이터 마이그레이션, 데이터 웨어하우징 등의 다양한 시나리오에서 사용됩니다.

파이썬은 데이터베이스 ETL 작업을 수행하기에 매우 유용한 도구입니다. 이번 글에서는 파이썬을 이용하여 데이터베이스 ETL 작업을 수행하는 방법에 대해 알아보겠습니다.

데이터 추출 (Extract)

데이터베이스 ETL 작업의 첫 번째 단계는 데이터 추출입니다. 파이썬으로 데이터베이스에서 데이터를 추출하는 방법은 여러 가지가 있습니다. 예를 들어, pymysql, psycopg2, pyodbc와 같은 파이썬 데이터베이스 연결 드라이버를 사용하여 데이터베이스에 연결하고 SQL 쿼리를 실행하여 데이터를 추출할 수 있습니다.

import pymysql

# 데이터베이스 연결
connection = pymysql.connect(host='localhost', user='username', password='password', db='database')

# SQL 쿼리 실행
cursor = connection.cursor()
sql_query = "SELECT * FROM table"
cursor.execute(sql_query)

# 데이터 추출
data = cursor.fetchall()

# 연결 해제
cursor.close()
connection.close()

데이터 변환 (Transform)

데이터 추출 후에는 데이터를 원하는 형태로 변환해야 합니다. 파이썬은 다양한 데이터 변환 작업에 유용한 라이브러리와 함수를 제공합니다. 예를 들어, pandas 라이브러리를 사용하여 데이터프레임으로 데이터를 변환하거나, numpy 라이브러리를 사용하여 데이터를 다차원 배열로 변환할 수 있습니다.

import pandas as pd

# 데이터프레임으로 변환
df = pd.DataFrame(data, columns=['column1', 'column2', 'column3'])

# 데이터 변환 작업
# ...

# 변환된 데이터프레임을 다시 다른 데이터베이스에 로드할 수도 있습니다.

데이터 로드 (Load)

데이터 추출과 변환을 마친 후에는 데이터를 다른 데이터베이스에 로드해야 합니다. 데이터를 다른 데이터베이스에 로드하는 방법은 데이터베이스의 종류에 따라 다를 수 있습니다. 예를 들어, pymysql, psycopg2, pyodbc와 같은 파이썬 데이터베이스 연결 드라이버를 사용하여 데이터를 로드할 수 있습니다.

import pymysql

# 데이터베이스 연결
connection = pymysql.connect(host='localhost', user='username', password='password', db='database')

# 로드할 데이터 생성
data_to_load = [('data1', 'value1'), ('data2', 'value2'), ('data3', 'value3')]

# 데이터 로드
cursor = connection.cursor()
sql_query = "INSERT INTO table (column1, column2) VALUES (%s, %s)"
cursor.executemany(sql_query, data_to_load)

# 커밋
connection.commit()

# 연결 해제
cursor.close()
connection.close()

결론

파이썬을 이용하여 데이터베이스 ETL 작업을 수행하는 방법에 대해 알아보았습니다. 데이터 추출, 변환 및 로드를 위해 파이썬의 다양한 라이브러리와 함수를 활용할 수 있습니다. 이를 통해 파이썬을 활용하여 데이터베이스 ETL 작업을 더욱 효율적으로 수행할 수 있습니다.

참고 자료