本文仅涉及 Vertica 导入导出本地文件, 以及两个 Vertica 集群相互导出, 不涉及 Vertica 和 hdfs/Hive 导入导出和互操作.
copy 数据导入工具
copy 命令无疑是最常用的导入工具了, 它是Vertica的bulk copy工具, 性能非常好. 可以直接从文本文件或者压缩文件导入数据,
支持的压缩格式有: BZIP | GZIP | LZO | UNCOMPRESSED
支持的文件格式有: csv | FIXEDWIDTH | json | ORC | parquet
设置为json 格式设置 parser.
从数据库 node 节点导入
从数据库节点的文件系统中导入数据, 需要有 vertica 的 superuser 的权限, 一般用比较少. 数据文件可以仅仅存放在某个节点上, 或者所有节点上. 比如在节点2上, 使用 on v_dbname_node0002
; 在所有节点上, 使用 ON ANY NODE
, 下面是一个示例.
COPY schema.table
(column_a, column_b...)
FROM '/tmp/bigdata.csv.gz' GZIP
on v_dbname_node0002
WITH
DELIMITER AS ','
ENCLOSED BY '"'
SKIP 1
从客户端本地导入(copy local)
copy local 更常用一些.
COPY schema.table
(column_a, column_b...)
FROM LOCAL '/tmp/bigdata.csv.gz' GZIP
WITH
DELIMITER AS ','
ENCLOSED BY '"'
SKIP 1
导出数据到本地文件
可以使用 vsql 命令行工具导出数据到本地文件, vsql 有非常强大的输出格式定制功能, 我们甚至可以使用 html 模版进行文件的导出.
vsql -U username -w passwd -h testdb01 -d vmart "select * from export_query_result " -Aq -P footer=off -F ',' -o "/tmp/example.csv"
export table 到另一个 vertica 集群中
--首先执行连接目标集群
CONNECT TO VERTICA my_database USER my_user PASSWORD 'my_password' ON '10.205.10.00',5433;
--执行数据 Export
EXPORT TO VERTICA my_database.my_schema.my_table as
select * from my_schema.my_table where my_date_column=date'2017-06-13';
---关闭连接
DISCONNECT my_database;