本文仅涉及 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;