2017-06-22 46 views
1

我想直接從Python寫入數據框到Netezza中。這甚至有可能嗎?我在做什麼,現在被導出爲CSV文件,然後上傳到Netezza公司是相當費時...將Python3中的數據框寫入Netezza

一個虛擬數據集如下:

s1=pd.Series(["Test1"]) 
s2=pd.Series(["Test2"]) 
s3=pd.Series(["Test3"]) 
df=pd.DataFrame([list(s1), list(s2), list(s3)], columns = ["STATUS"]) 

我然後連接到Netezza公司(例如):

#import libraries 
import pandas as pd 
import pyodbc 

engine = pyodbc.connect("DRIVER={NetezzaSQL};SERVER=netezzakm01;PORT=5480;DATABASE=SDSNZKM01;UID=KMMTBA;PWD=xxx;") 

這就像我得到的一樣,因爲我嘗試寫的任何東西都來不及工作......有可能做到這一點?

回答

0

到目前爲止,我已經能夠做的最好的是:

  1. netezza一邊,我創建我想要的結構表,

    創建表mytablename ( 數值指明MyDate DATE, MYDISTRIBUTEKEY BIGINT, SOMESTRING VARCHAR(128)DEFAULT NULL, SOMEINT INTEGER DEFAULT NULL, SOMEFLOAT FLOAT DEFAULT NULL )上(MYD分發istributekey);

  2. 我說的數據幀是mydf這樣

    列表(mydf.columns) == [ '指明MyDate', 'MYDISTRIBUTEKEY', 'SOMESTRING', 'SOMEINT', 'SOMEFLOAT']

  3. 轉儲數據幀到磁盤

    mydf.to_csv( 'df_on_disk.tab',九月= '\ t' 的指數=假,標題=假)

  4. 你現在可以將文件的一個BULK負載在磁盤上成netezza,來自netezza。請注意,我通過JDBC連接,與jaydebeapi

    INSERT INTO mytablename SELECT * FROM EXTERNAL'df_on_disk.tab'USING(DELIM'\ t'REMOTESOURCE'JDBC');在mytablename上生成統計信息;

這不是確切的解決方案,但你會想做這樣的事情。