我想直接从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;")
这是我得到的,因为我试图写的任何其他东西都无法工作......是否可以这样做?
答案 0 :(得分:1)
到目前为止,我能做的最好的事情如下:
在netezza
方面,我创建了一个包含我想要的结构的表,
创建表mytablename ( MYDATE DATE, MYDISTRIBUTEKEY BIGINT, SOMESTRING VARCHAR(128)DEFAULT NULL, SOMEINT INTEGER DEFAULT NULL, SOMEFLOAT FLOAT DEFAULT NULL )分发(mydistributekey);
我的数据框说mydf
是这样的
列表(mydf.columns) == [' MYDATE',' MYDISTRIBUTEKEY' SOMESTRING' SOMEINT' SOMEFLOAT']
将数据框转储到磁盘
mydf.to_csv(' df_on_disk.tab' 09月=' \吨',索引=假,标题=假)
您现在可以从netezza
将磁盘上文件的BULK加载到netezza中。请注意,我通过JDBC连接jaydebeapi
。
INSERT INTO mytablename SELECT * FROM EXTERNAL' df_on_disk.tab'使用(DELIM' \ t' REMOTESOURCE' JDBC');在mytablename上生成统计数据;
这不是确切的解决方案,但您可能希望做类似的事情。