티스토리 뷰

구분자로 구분된 대용량 CSV 파일을  PPAS에 Loading 하려는 니즈가 있을때는

간단하게, 아래와 같이 psycopg2를 이용한 스크립트를 활용할 수 있다.

- 케릭터셋이 맞지 않아 인코딩이 필요한 경우를 해결하기 위해 codecs 라이브러리를 이용해 파일오픈과 인코딩을 함께 하였으며,

- 리모트 서버에 파일이 존재하는 경우를 해결하기 위해 copy_from 구문의 stdin 방법을 활용하는 함수를 이용하였다.


pgdb = psycopg2.connect(host=pg_ip, port=pg_port,

user=pg_user, password=pg_pw, dbname=pg_db)

pgcur = pgdb.cursor()

f = codecs.open(pg_path, "r", encoding="UTF8")

try:

pgcur.execute("truncate table "+pg_tbl)

pgcur.copy_from(f, pg_schema+"."+pg_tbl, sep='|', null='', size=8192)

except:

pgdb.rollback();

pgdb.commit()

f.close()

pgdb.close()


간단하지만 필요한 기능이 모두 숨어있어서 정리 ^0^/

댓글
댓글쓰기 폼