将数据帧从Python3写入Netezza

时间:2017-06-22 05:56:11

标签: python-3.x export netezza

我想直接从Python编写一个数据帧到Netezza。这甚至可能吗?我现在正在做的是导出到CSV然后上传到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;")

这是我得到的,因为我试图写的任何其他东西都无法工作......是否可以这样做?

1 个答案:

答案 0 :(得分:1)

到目前为止,我能做的最好的事情如下:

  1. netezza方面,我创建了一个包含我想要的结构的表,

    创建表mytablename ( MYDATE DATE, MYDISTRIBUTEKEY BIGINT, SOMESTRING VARCHAR(128)DEFAULT NULL, SOMEINT INTEGER DEFAULT NULL, SOMEFLOAT FLOAT DEFAULT NULL )分发(mydistributekey);

  2. 我的数据框说mydf是这样的

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

  3. 将数据框转储到磁盘

    mydf.to_csv(' df_on_disk.tab' 09月=' \吨',索引=假,标题=假)

  4. 您现在可以从netezza将磁盘上文件的BULK加载到netezza中。请注意,我通过JDBC连接jaydebeapi

    INSERT INTO mytablename SELECT * FROM EXTERNAL' df_on_disk.tab'使用(DELIM' \ t' REMOTESOURCE' JDBC');在mytablename上生成统计数据;

  5. 这不是确切的解决方案,但您可能希望做类似的事情。