加载示例数据
Vertica 提供了多种解决方案,用于加载包含结构化和非结构化数据以及多种格式的文件。
创建示例数据文件
使用以下内容创建一个名为 cities.csv
的示例 CSV 文件并将其保存到 /home/dbadmin/cities.csv。
City,State,Zip,Population
Boston,MA,02108,694583
Chicago,IL,60601,2705994
Seattle,WA,98101,744955
Dallas,TX,75201,1345047
New York,NY,10001,8398748
从文件加载结构化数据
-
运行 vsql。
$ vsql
-
创建 cities 表。
=> CREATE TABLE cities ( city varchar(20), state char(2), zip int, population int );
-
使用 COPY 语句从
cities.csv
文件加载数据。以下命令在主目录中记录异常和拒绝。=> COPY cities FROM LOCAL '/home/dbadmin/cities.csv' DELIMITER ',' NULL '' EXCEPTIONS '/home/dbadmin/cities_exceptions.log' REJECTED DATA '/home/dbadmin/cities_rejections.log';
-
查看拒绝日志以了解哪些数据被排除在外。在此处,标题被排除在外。
$ cat /home/dbadmin/cities_rejections.log City,State,Zip,Population
-
查看异常以了解有关错误的详细信息。在此例中,标题未通过 Vertica 的整数数据类型验证。
$ cat /home/dbadmin/cities_exceptions.log COPY: Input record 1 has been rejected (Invalid integer format 'Zip' for column 3 (zip)). Please see /home/dbadmin/cities_rejections.log, record 1 for the rejected record. This record was record 1 from cities.csv
-
要解决此问题,请将 SKIP 1 添加到原始 COPY 语句。这将排除第一行。
=> COPY cities FROM LOCAL '/home/dbadmin/cities.csv' DELIMITER, 'NULL' EXCEPTIONS '/home/dbadmin/cities_exceptions.log' REJECTED DATA '/home/dbadmin/cities_rejections.log' SKIP 1;
使用 Flex 表加载非结构化数据
为了从其他来源加载数据,Vertica 使用 Flex 表。Flex 表允许您加载非结构化或“半结构化”数据,而无需创建架构或列定义,从而简化了数据加载。
支持的格式包括:
-
Avro 数据
-
CEF
-
CSV
-
分隔
-
JSON
-
创建名为 cities_flex 的表。请注意它是如何排除列名或数据类型的。
=> CREATE FLEXIBLE TABLE cities_flex();
-
将 CSV 文件加载到表中。
=> COPY cities_flex FROM '/source/cities.csv' PARSER FDELIMITEDPARSER (delimiter=',');
-
查询 cities_flex 表,从原始 CSV 文件指定列名。
=> SELECT city, state FROM cities_flex;