Bulk Data Insert 하기 위한 간단한 방법들(pandas, sqlalchemy)

NewNewDaddy·2024년 1월 10일
0

PYTHON

목록 보기
5/9
post-thumbnail

1. Pandas - to_sql()

  • 메소드 관련 문서 : Docs

  • 설명 : Pandas 데이터프레임을 SQL 데이터베이스의 테이블로 저장하기 위해 사용됩니다. 일반적으로 SQLAlchemy를 사용하여 데이터베이스 연결을 설정하고 데이터를 데이터베이스로 쓰는 데 사용됩니다.

  • 사용법

    dataframe.to_sql( name = [테이블 이름], con = [sqlalchemy_connector], if_exists = [옵션] )
  • 예시 코드

    
    # 1) sqlalchemy 커넥션 생성
    from sqlalchemy import create_engine
    import pandas as pd
    
    engine = 'postgresql'
    user = 'user_id'
    passwd = 'password'
    host = 'localhost'
    port = '5432'
    db_name = 'postgres'
    
    db = create_engine(f'{engine}://{user}:{passwd}@{host}:{port}/{db_name}')
    
    # 2) Data Import
    df = pd.read_csv('names.csv')
    
    # 3) Data Bulk Insert
    df.to_sql(name='point', con=db, if_exists='replace')
                                    # fail : 테이블 존재하면 실패
                                    # append : 테이블 존재하면 아래에 row 추가
                                    # replace : 테이블 존재하면 명령 내린 테이블 데이터로 교체

2. psycopg2 - execute_values()

  • 메소드 관련 문서 : Docs

  • 설명 : SQLAlchemy를 사용하여 데이터를 데이터베이스 테이블에 삽입하기 위한 고성능 메서드입니다.

  • 사용법

    execute_values(cur = [connector], sql = [INSERT 쿼리], argslist = [value 리스트])
  • 예시 코드

    
    # 1) psycopg2 커넥션 생성
    import psycopg2
    
    db = psycopg2.connect(host='localhost', dbname='postgres', user='hyunsoo', password='150808', port=5432)
    
    cursor=db.cursor()
    
    # 2) Data Import
    df = pd.read_csv('names.csv')
    insert_list = [tuple(df.iloc[i]) for i in range(len(df))]
    
    # 3) Data Bulk Insert
    from psycopg2.extras import execute_values
    
    sql = f"INSERT INTO lecture VALUES %s;"
    execute_values(cursor, sql, insert_list)
profile
데이터 엔지니어의 작업공간 / #PYTHON #CLOUD #SPARK #AWS #GCP #NCLOUD

0개의 댓글