Python에서 to_sql() 메서드로 dataframe을 Oracle 데이터베이스에 Insert 할때
Dataframe 컬럼중 테이터타입이 object인 경우 CLOB(Character large object, CLOB) 자료형으로 매핑되어 Insert가 됨
(CLOB으로 Insert 되게 되면 속도가 매우 느립니다)
import numpy as np
import pandas as pd
import sqlalchemy as sa
from sqlalchemy import create_engine
engine = create_engine('oracle://{}:{}@{}'.format(USERNAME, PASSWORD, DATABASE))
df = pd.read_csv("file_path")
# object 타입 추출 및 매핑
object_columns = [c for c in df.columns[df.dtypes == 'object'].tolist()]
dtyp = {c:sa.types.VARCHAR(df[c].str.len().max()) for c in object_columns}
df.to_sql(name="", schema="", con=engine, if_exists="", ..., dtype=dtyp)
https://stackoverflow.com/questions/42727990/speed-up-to-sql-when-writing-pandas-dataframe-to-oracle-database-using-sqlalch
[데이터베이스] 데이터 테이블 종류 및 특성 (운영계 - OLTP 관점) (0) | 2022.03.22 |
---|---|
[Oracle] Distinct(unique) 누적 유저 수 구하기 예제 쿼리 (0) | 2022.01.26 |
[DB 튜닝] DB 튜닝 개론 / 기초 (0) | 2021.12.06 |
[Oracle] 날짜 표시 형식 변경하기 (시분초까지 보이게하기) (0) | 2021.06.19 |
[DB] 쿼리 조건문 WHERE 1=1, WHERE 절에 1=1 사용 하는 이유 (동적 쿼리) (0) | 2021.06.05 |