加载示例数据

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

从文件加载结构化数据

  1. 运行 vsql。

    $ vsql
    
  2. 创建 cities 表。

    => CREATE TABLE cities (
    city       varchar(20),
    state      char(2),
    zip        int,
    population int
    );
    
  3. 使用 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';
    
  4. 查看拒绝日志以了解哪些数据被排除在外。在此处,标题被排除在外。

    $ cat /home/dbadmin/cities_rejections.log
    
    City,State,Zip,Population
    
  5. 查看异常以了解有关错误的详细信息。在此例中,标题未通过 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
    
  6. 要解决此问题,请将 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

  1. 创建名为 cities_flex 的表。请注意它是如何排除列名或数据类型的。

    => CREATE FLEXIBLE TABLE cities_flex();
    
  2. 将 CSV 文件加载到表中。

    => COPY cities_flex FROM '/source/cities.csv' PARSER FDELIMITEDPARSER (delimiter=',');
    
  3. 查询 cities_flex 表,从原始 CSV 文件指定列名。

    => SELECT city, state FROM cities_flex;