使用 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/

相关文章:

Tokyo Cabinet 的 Python 表引擎绑定(bind)

python - 如何将分组结果转换为数据框

python - 使用 Python Paramiko 将 .csv 文件从 SFTP 服务器读取到内存

sql - 如何在 SQL 中匹配和替换字符串的各个部分

python - 运行 Flask 应用程序时 AWS cloud9 超时

python - 将函数应用于每 n 行 pandas

python - 将 pandas df 列数据转置为行

sql - Vertica 与 PostgreSQL 不同的计算

python - 为什么从 Spark 写入 Vertica DB 比从 Spark 写入 MySQL 需要更长的时间?

python - 在python中插入3d数组