使用
COPY
NATIVE 解析器加载数据时,要求输入数据文件符合本附录中所述的要求。所有 NATIVE 文件必须包含:
将 NATIVE 文件加载到表中:示例部分将介绍使用 NATIVE 解析器加载数据的示例。
使用
COPY
NATIVE 解析器加载数据时,要求输入数据文件符合本附录中所述的要求。所有 NATIVE 文件必须包含:
将 NATIVE 文件加载到表中:示例部分将介绍使用 NATIVE 解析器加载数据的示例。
NATIVE 二进制文件的第一部分由文件签名构成。签名内容是固定的,列在下表中。
签名确保文件既没有被非 8 位文件传输损坏,也没有去除回车键、换行符或 null 值。如果签名完整,Vertica 将确定文件未损坏。
在文件签名之后,该文件必须定义文件中每列的宽度,如下所示。
每列宽度由其包含的数据类型确定。下表说明了每个数据类型所需的列宽度以及数据编码。
文件标题后面是包含每行数据的数据的一系列记录。每个记录以标题开头:
记录标题后面是行的列值。这些值没有分隔符。它们在数据行中的位置基于上一列数据结束的位置进行计算。大部分数据类型具有固定宽度,因此位置很容易确定。宽度可变的值(例如 VARCHAR 和 VARBINARY)以值包含的字节数计数开头。
有关每个数据类型的值如何存储在行数据中的详细信息,请参阅上一部分的表。
以下示例将展示如何创建表并加载包含单行数据的 NATIVE 文件。此表包含所有可能的数据类型。
=> CREATE TABLE allTypes (INTCOL INTEGER,
FLOATCOL FLOAT,
CHARCOL CHAR(10),
VARCHARCOL VARCHAR,
BOOLCOL BOOLEAN,
DATECOL DATE,
TIMESTAMPCOL TIMESTAMP,
TIMESTAMPTZCOL TIMESTAMPTZ,
TIMECOL TIME,
TIMETZCOL TIMETZ,
VARBINCOL VARBINARY,
BINCOL BINARY,
NUMCOL NUMERIC(38,0),
INTERVALCOL INTERVAL
);
=> COPY allTypes FROM '/home/dbadmin/allTypes.bin' NATIVE;
=> \pset expanded
Expanded display is on.
=> SELECT * from allTypes;
-[ RECORD 1 ]--+------------------------
INTCOL | 1
FLOATCOL | -1.11
CHARCOL | one
VARCHARCOL | ONE
BOOLCOL | t
DATECOL | 1999-01-08
TIMESTAMPCOL | 1999-02-23 03:11:52.35
TIMESTAMPTZCOL | 1999-01-08 07:04:37-05
TIMECOL | 07:09:23
TIMETZCOL | 15:12:34-04
VARBINCOL | \253\315
BINCOL | \253
NUMCOL | 1234532
INTERVALCOL | 03:03:03
allTypes.bin
文件的内容在下面显示为原始十六进制转储:
4E 41 54 49 56 45 0A FF 0D 0A 00 3D 00 00 00 01 00 00 0E 00
08 00 00 00 08 00 00 00 0A 00 00 00 FF FF FF FF 01 00 00 00
08 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00
FF FF FF FF 03 00 00 00 18 00 00 00 08 00 00 00 73 00 00 00
00 00 01 00 00 00 00 00 00 00 C3 F5 28 5C 8F C2 F1 BF 6F 6E
65 20 20 20 20 20 20 20 03 00 00 00 4F 4E 45 01 9A FE FF FF
FF FF FF FF 30 85 B3 4F 7E E7 FF FF 40 1F 3E 64 E8 E3 FF FF
C0 2E 98 FF 05 00 00 00 D0 97 01 80 F0 79 F0 10 02 00 00 00
AB CD AB CD 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 64 D6 12 00 00 00 00 00 C0 47 A3 8E 02 00 00 00
下表将此文件拆分为各个部分,并介绍了其包含的值。