2017-06-22 64 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上生成统计信息;

这不是确切的解决方案,但你会想做这样的事情。