2017-11-22 13 views
1

問題文:どのようにデータフレーム(pythonで)からgreenplumテーブルにデータを挿入できますか?

私は複数のcsvファイルを持っています。私はそれらをPythonを使用してクリーニングし、bcpを使用してSQLサーバーに挿入しています。今、私はそれをGreenplumにSQL Serverの代わりに挿入したいと思います。 pythonデータフレームからGreenPlumテーブルに直接greenplumテーブルに一括挿入する方法を提案してください。

ソリューション:私は考えることができます(私は考えることができますどのような)

ウェイCSV-> DATAFRAMEある - > Cleainig - > DATAFRAME - > CSV - >その後、バルクロードのためGploadを使用してください。また、自動化のためにシェルスクリプトに統合します。 誰にでも良い解決策がありますか?テーブルをGPにするデータフレームから直接データをロード中

問題:

ファイルパスを要求しgploadとして。私はそれにvaribaleやデータフレームを渡すことはできますか?私は、データフレームからcsvまたはtxtファイルを作成し、それをgreenplumにロードしたくありません。

+0

を何PL/Pythonの使用とGreenplumは内部の掃除をやって? –

答えて

0

これを行うにはpsycopg2とioライブラリを使用します。 ioが組み込まれており、pip(またはconda)を使ってpsycopg2をインストールすることができます。

基本的には、データフレームをcsv形式の文字列バッファ( "メモリファイル")に書き込みます。次にpsycopg2のcopy_from関数を使用してテーブルに一括読み込み/コピーします。

これはあなたが始める必要があります。

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() 
関連する問題