gpt4 book ai didi

使用 vertica-python 将 Python pandas 数据帧转换为 vertica 表

转载 作者:行者123 更新时间:2023-11-30 22:37:27 30 4
gpt4 key购买 nike

我正在使用 python 与 vertica 进行通信。有没有一种优雅的方法来使用 pandas 数据框创建新的 vertica 表。我正在使用vertica-python 0.6.14。我知道的唯一方法是使用 for 循环将数据帧的每一行写入 vertica。此外,在 vertica 中创建表非常痛苦,因为您需要知道每列的数据类型。我想知道在提交 for 循环之前是否有一个简单的解决方案可以处理所有事情。

我尝试使用以下内容:

from sqlalchemy import create_engine
engine = create_engine('vertica+vertica_python://user:pass@host:5433/MYDB')
df.to_sql('mytable', engine)

它创建了一个表,但没有填充它,并且我收到一条错误消息。

我还尝试通过 DSN 安装驱动程序并配置 DSN。然后我用了这一行:

engine = create_engine('vertica+pyodbc://username:password@mydsn')

我可以与 vertica 通信,但 pandas -> vertica 仍然无法工作。有什么建议吗?

谢谢

最佳答案

您可以使用复制语句将数据从 Pandas 数据框插入到 Vertica:

import vertica_python
conn_info = {'host': host,
'port': port,
'user': user,
'password': password,
'database': database,
# 10 minutes timeout on queries
'read_timeout': 600,
# default throw error on invalid UTF-8 results
'unicode_error': 'strict',
# SSL is disabled by default
'ssl': False,
'connection_timeout': 30
# connection timeout is not enabled by default
}
df_csv = df.to_csv(sep=',',index=False)
cols = tuple(df.columns)
with vertica_python.connect(**conn_info) as connection:
cur = connection.cursor('dict')
cur.copy("""COPY yourtable {}
from stdin DELIMITER ',' """.format(cols),
df_csv)

关于使用 vertica-python 将 Python pandas 数据帧转换为 vertica 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43885486/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com