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

标签 python pandas vertica

我正在使用 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/

相关文章:

python - Pandas 值(value)错误: cannot reindex from a duplicate axis when trying to do calculation based on values from another df

python - 根据某些行/条件将表格格式化为多列

php - 在 PHP 或 Python 中从 HTML 中提取数据

python - 运行两个异步函数而不互相阻塞

python - Pandas 无法使用 pandas 读取带有额外引号字符的 CSV 文件

java - VerticaCopyStream 非常慢

vertica - LONG VARCHAR 如何 “LIKE”?

vertica - 如何为 Vertica 用户提供对某些指定系统表的只读访问权限?

python - 在python中以制表符分隔格式分割文本,将其添加到列表并将其写入文件......有更好的方法吗?

python - 使用 json 中的嵌套数据创建表并将其附加到 databricks