我想将某些数据从Vertica群集(比如说测试群集)复制到另一个Vertica群集(比如QA群集)。手动我可以通过将查询结果转储到CSV文件然后将其导入另一个集群来实现。但是,如何在不使用os或系统命令的情况下在Python脚本上执行此操作。我想纯粹使用一些Python模块或适配器。截至目前我正在使用python-vertica适配器,我能够连接到测试集群并将数据导入python列表,但是我无法使用适配器将其导出到CSV文件(即不使用python csv模块)。另外,如何使用相同的适配器(或python的不同vertica模块)在我的QA群集中导入CSV文件?
答案 0 :(得分:0)
COPY FROM VERTICA
解决简单问题。请阅读here了解详情。<强>环境强>:
源代码示例:
#!/usr/bin/env python2
# coding: UTF-8
import csv
import cStringIO
# connection info: username, password, etc
SRC_DB_INFO = {...}
DST_DB_INFO = {...}
csvbuffer = cStringIO.StringIO()
csvwriter = csv.writer(csvbuffer, delimiter='|', lineterminator='\n', quoting=csv.QUOTE_MINIMAL)
# establish connection to source database
connection = vertica_python.connect(**SRC_DB_INFO)
cursor = connection.cursor()
cursor.execute('SELECT * FROM A')
# convert data to csv format
for row in cursor.iterate():
csvwriter.writerow(row)
# cleanup
cursor.close()
connection.close()
# establish connection to destination database
connection = vertica_python.connect(**DST_DB_INFO)
cursor = connection.cursor()
# copy data
cursor.copy('COPY B FROM STDIN ABORT ON ERROR', csvbuffer.getvalue())
connection.commit()
# cleanup
cursor.close()
connection.close()