【问题标题】:Writing a dataframe from Python3 into Netezza将 Python3 中的数据帧写入 Netezza
【发布时间】:2017-06-22 05:56:11
【问题描述】:

我想直接从 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;")

这是我所能得到的,因为我尝试写的其他任何东西都远未实现......有可能做到这一点吗?

【问题讨论】:

    标签: python-3.x export netezza


    【解决方案1】:

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

    1. netezza 一侧,我创建了一个具有我想要的结构的表,

      创建表 mytablename ( MYDATE 日期, MYDISTRIBUTEKEY BIGINT, 某些字符串 VARCHAR(128) 默认为 NULL, 某些整数默认为 NULL, SOMEFLOAT FLOAT 默认 NULL ) 在 (mydistributekey) 上分发;

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

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

    3. 将数据帧转储到磁盘

      mydf.to_csv('df_on_disk.tab',sep='\t',index=False,header=False)

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

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

    这不是确切的解决方案,但您会想要做类似的事情。

    【讨论】:

      猜你喜欢
      • 2019-06-23
      • 1970-01-01
      • 2020-10-06
      • 2018-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-22
      相关资源
      最近更新 更多