![](/img/trans.png)
[英]Read xlsx from azure blob storage to pandas dataframe without creating temporary file
[英]Creating Temporary Table on Netezza from Pandas DataFrame
我希望将我的工作流程从 SAS 更改为 Python,到目前为止,除了一件非常重要的事情之外,我已经取得了相当大的成功。 我不知道如何将 Pandas DataFrames 上传到我公司的 Netezza 以用于以后的查询。 这实际上非常重要,因为我们有许多数据集可以上传并用于查询。
我有以下熊猫数据帧:
[In ] df
[Out]
col1 col2 col3
0 1 2 3
1 4 5 6
2 7 8 9
我想通过 ODBC 连接将此 DataFrame 上传到我的 Netezza 盒子。 连接已经建立如下:
import pyodbc
conn = pyodbc.connect("Driver=NetezzaSQL;Server=...;")
我将此连接与 Pandas read_sql
结合使用来提取数据并将其存储在 DataFrame 中。 但是,我还没有弄清楚如何提取数据。 在 SAS 中,我会执行以下操作:
proc sql _method;
connect to netezza as net_dw
(auth domain info goes here...)
execute( create temporary table my_table
( col1 int,
col2 int,
col3 int ) distribute on (col1) by net_dw)
insert into temp.my_table
select col1, col2, col3 from work.my_table;
quit;
我使用 Pandas 尝试了以下操作:
t = pd.read_sql('''create temporary table test1 (col1 int, col2 int, col3 int); insert into temp.test1 select * from df''', conn)
但得到了一个TypeError: 'NoneType' object is not iterable
。
是否可以使用 pyodbc 和 Pandas 将临时表上传到 Netezza?
nzalchemy可以提供帮助。
pip install sqlalchemy
unixOdbc
( yum instal unixODBC-devel
unixOdbc
yum instal unixODBC-devel
或brew install unixOdbc
.to_sql
方法可用于将数据帧作为表直接移动到 Netezzafrom sqlalchemy import create_engine
from urllib import parse_quote_plus
# assumes NZ_HOST, NZ_USER, NZ_PASSWORD are set
import os
params = parse_quote_plus(f"DRIVER=NetezzaSQL;SERVER={os['NZ_HOST']};"
f"DATABASE={os['NZ_DATABASE']};USER={os['NZ_USER']};"
f"PASSWORD={os['NZ_PASSWORD']}")
engine = create_engine(f"netezza+pyodbc:///?odbc_connect={params}",
echo=True)
# assuming df to be a dataframe
df.to_sql('users', con=engine)
engine.execute("SELECT * FROM users").fetchall()
api 的详细信息 - DataFrame.to_sql
当然,首先你需要将你的 DataFrame 写入一个平面文件,我认为 pandas 有一种构建 csv的方法。 然后调用如下所示的临时外部表。
create temporary table my_table
( col1 int,
col2 int,
col3 int ) distribute on (col1) by net_dw)
insert into temp.my_table
select col1, col2, col3 from EXTERNAL 'FULL FILE PATH'
sameas my_table
using (REMOTESOURCE 'ODBC' delim ',');
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.