ORC 数据
ORC(优化的行列)格式是一种面向列的文件格式。Vertica 拥有一个可处理此格式且可利用列式布局的解析器。
在 COPY 语句中,请按如下所示指定解析器。请注意,这不是通常的 PARSER parser-name 语法;COPY 直接支持 ORC:
=> COPY tableName FROM path ORC[(...)];
该解析器会使用多个可选参数;请参阅 ORC 参考页面。
请注意,如果您在同一个 COPY 语句中从多个文件加载数据,而其中任何一个加载被中止,那么整个加载都会中止。这种行为与分隔文件的行为不同,分隔文件中的 COPY 语句会加载其可以加载的数据并忽略剩余数据。
支持的数据类型
Vertica 可以本机读取所有 Hive 原始数据类型的列。有关完整列表,请参阅 HIVE 数据类型(特别是数字、日期/时间、字符串和其他列表)。Vertica 还可以加载 UUID 和 复杂类型(任意组合的数组和结构)。
您为 COPY 或 CREATE EXTERNAL TABLE AS COPY 指定的数据类型必须与数据中的类型完全匹配,但 Vertica 允许在兼容的数字类型之间进行隐式转换。
时间戳和时区
要正确报告时间戳,Vertica 必须知道将数据写入的时区。早期版本的 ORC 格式不会记录该时区。
Hive 版本 1.2.0 及更高版本会在条带页脚中记录写入者所在的时区。Vertica 会使用该时区来确保读入到数据库中的时间戳值与写入到源文件的时间戳值相匹配。对于缺少此时区信息的 ORC 文件,Vertica 假设这些值已写入到本地时区,并在 QUERY_EVENTS 系统表中记录 ORC_FILE_INFO 事件。在第一次查询后检查此类型的事件,以验证时间戳是否按预期予以处理。