본문 바로가기
동굴 속 정보

RDBMS에서 데이터 가져오기

by 도시형닌자 2020. 7. 7.

[ 데이터 가져오기 ]

데이터를 들고 오는 행위를 Data Import라고 한다.

import라는 용어는 수입이라는 용어도 있지만 가져오기라는 의미도 있다.

 

머신러닝에 사용하는 데이터는 어딘가에 저장되어 있다.

이러한 데이터를 들고 오기 위해서는 항상 삽질이 동반된다.

 

Hive에서 데이터를 가져오던

Spark를 통해서 데이터를 가져오던

RDBMS를 통해서 가져오던

API를 통해서 가져오던

일단 가져와야지 데이터를 전처리하고 학습할 수 있다.

 

데이터를 가져오는 방법을 알아야 다음 단계로 넘어갈 수 있다.

간단하지만, 삽질이 동반되는 코드이므로 한 개씩 정리해 본다.

 

hive에서 데이터를 가져오는 방법은 전에 글을 참고하면 된다.

https://dorumugs.tistory.com/112

 

Hive에서 데이터 가져오기

[ 데이터 가져오기 ] 데이터를 들고 오는 행위를 Data Import라고 한다. import라는 용어는 수입이라는 용어도 있지만 가져오기라는 의미도 있다. 머신러닝에 사용하는 데이터는 어딘가에 저장되어 ��

dorumugs.tistory.com

 

 

 

 

[ MSSQL & MYSQL에서 데이터 가져오기 ]

from sqlalchemy.engine import create_engine
from sqlalchemy.pool import NullPool
import pandas as pd

def import_mssql_data(ms_query):
	user_id = 'admin'
	passwd = 'passwd'
	url='127.0.0.1:'
	db_name='MSSQL'
	engine = create_engine(
			'mssql+pymssql://'
			+ user_id + ':'
			+ passwd + '@@'
			+ url + '/'
			+ db_name,
			echo=False,
			poolclass=NullPool
		)
	return pd.read_sql(ms_query, engine)

def import_mysql_data(my_query):
	user_id = 'admin'
	passwd = 'passwd'
	url='127.0.0.1:'
	db_name='MYSQL'
	engine = create_engine(
			'mysql+mysqlconnector://'
			+ user_id + ':'
			+ passwd + '@'
			+ url + '/'
			+ db_name,
			echo=False,
			poolclass=NullPool
	)
	return pd.read_sql(my_query, engine)

ms_query = "SELECT name, gender, age from MSSQL.customer_infomation"
ms_data = import_mssql_data(ms_query)

my_query = "SELECT name, gender, age from MYSQL.customer_infomation"
my_data = import_mysql_data(my_query)

기본적으로 HIVE에서 데이터를 불러오는 방법과 일치한다.

하지만 다른 점이 바로 create_engine의 옵션 값이다.

 

MSSQL에서는 'mssql+pymssql://'로 시작하며

MYSQL에서는 'mysql+mysqlconnector://'로 시작한다.

연결할 때 사용하는 사용하는 문구가 조금 다르다.

사용하는 라이브러리가 달라서 문구가 다르다.

 

pip install로 필요 라이브러리를 설치하고

user_id와 passwd를 자신의 DB에 맞게 변경하고

URL과 DB Name만 맞추면 쿼리에 맞게 동작할 것이다.

pip install sqlalchemy
pip install mysql-connector
pip install pymssql
pip install pandas

 

DB에 저장된 데이터는 Dataframe으로 가져온다.

Dataframe은 파이썬의 엑셀이라고 보면 된다.

엑셀처럼 계산도 되고 뗐다 붙였다 하는 기능이 다양하다.

 

Dataframe은 그냥 엑셀이라고 생각하자.

Dataframe을 잘 사용하면 좋을 것이다.

Dataframe에 날개를 달아주는 Pandas에 관심을 가져보자.

 

간단한 방법이지만

정리해두지 않으면 필요할 때 찾느냐고 시간이 소요된다.

소소하게 필요한 내역은 지속적으로 정리하려고 한다.