2017-11-22 1 views
1

문제 설명 :어떻게 dataframe (파이썬에서)에서 greenplum 테이블에 데이터를 삽입 할 수 있습니까?

나는 여러 csv 파일이 있습니다. 나는 그들을 python을 사용하여 청소하고 bcp을 사용하여 SQL 서버에 삽입하고 있습니다. 이제 SQL Server 대신 Greenplum에 삽입하려고합니다. python 데이터 프레임에서 GreenPlum 테이블로 직접 greenplum 테이블에 대량 삽입하는 방법을 제안하십시오.

솔루션 : -> Cleainig -> Dataframe - 내가 생각할 수있는 (내가 생각할 수있는 어떤)

방법은 CSV-> Dataframe입니다> CSV -> 다음 대량 부하 Gpload를 사용합니다. 자동화를 위해 쉘 스크립트에 통합하십시오. 누구나 좋은 해결책이 있습니까? 파일 경로를 요청 gpload으로

: 직접 dataframe에서 데이터를로드에서

문제는 테이블을 GP합니다. 저기 varibale 또는 데이터 프레임을 전달할 수 있습니까? 어떤 방법으로 greenplum에 대량로드 할 수 있습니까? 데이터 프레임에서 csv 또는 txt 파일을 만든 다음 greenplum에로드하고 싶지 않습니다.

+0

무엇을? –

답변

0

이렇게하려면 psycopg2 및 io 라이브러리를 사용합니다. io가 내장되어 있으며 pip (또는 conda)를 사용하여 psycopg2를 설치할 수 있습니다.

기본적으로 데이터 프레임을 csv 형식의 문자열 버퍼 ("메모리 파일")에 씁니다. 그런 다음 psycopg2의 copy_from 기능을 사용하여 테이블에 대량로드/복사하십시오.

이것은 당신이 시작할 수 있어야합니다

PL/Python을 사용하고 그린 플럼 내부를 청소 하 고 약
import io 
import pandas 
import psycopg2 

# Write your dataframe to memory as csv 
csv_io = io.StringIO() 
dataframe.to_csv(csv_io, sep='\t', header=False, index=False) 
csv_io.seek(0) 


# Connect to the GreenPlum database. 
greenplum = psycopg2.connect(host='host', database='database', user='user', password='password') 
gp_cursor = greenplum.cursor() 

# Copy the data from the buffer to the table. 
gp_cursor.copy_from(csv_io, 'db.table') 
greenplum.commit() 

# Close the GreenPlum cursor and connection. 
gp_cursor.close() 
greenplum.close() 
관련 문제