Greenplum ngram 数据集:缺少列数据

Greenplum ngram dataset: missing data for column

我的最终目标是将 ngram 数据集插入到我的 Greenplum 数据库的内部负载 table 中。

我有一个服务器 运行 gpfdist

我创建了外部 tables(在 Greenplum 上):

    CREATE EXTERNAL TABLE ng_schema.fre2(
    id bigserial, 
    ngram text,
    year int4,
    match_count int4,
    page_count int4,
    volume_count int4)
    LOCATION ('gpfdist://10.1.8.4:8081/ngram_2009h1/fre-all/2/*.csv')
    FORMAT 'TEXT' (HEADER) 
    LOG ERRORS INTO ng_schema.load_e_fre2 SEGMENT REJECT LIMIT 500 rows;

数据集都说 "csv",但它们不包含逗号。它们包含选项卡。

   #head -n20 *92.csv
   ! 144    1836    2    2    2
   ....

接下来,我测试外部table:

    SELECT * FROM fre2;
    ERROR: Segment reject limit reached. Aborting operation. Last error was 
    missing data for column "volume_count"...

我进入日志错误 table 并看到:

  2016-07-21 20:51:49.05593+00  | fre2    | gpfdist://10.1.8.4:8081/ngram_2009h1/fre-all/2/*.csv [/mnt2/ngram_2009h1/fre-all/2/googlebooks-fre-all-2gram-20090715-0.csv] |         |         | missing data for column "volume_count" | ! Giscard       1979    2       2  
 2                 | 

我试过 FORMAT 'TEXT' (HEADER)。我添加了 DELIMITER ' '。我已将其更改为 CSV,但我最终丢失了不同列的数据。

我认为问题在于“!Giscard”被计为 2 列。 ngram 中有空格。

或者错误可能是 id bigserial

有什么要更改的想法吗?

在这种情况下,串行列将成为您的问题。但是您看到的错误似乎与解析时使用的定界符有关。您使用的是制表符还是空格?

下面是使用制表符作为分隔符的示例,我创建了两个 table。外部table用于将数据读入新的table。这里的关键是外部 table 没有 bigserial 列。当您将数据加载到新的 table 时,序列号将自动生成。

CREATE TABLE fre2_new( 
id bigserial, 
ngram text,
year int4,
match_count int4,
page_count int4,
volume_count int4); 

CREATE EXTERNAL TABLE fre2(
ngram text,
year int4,
match_count int4,
page_count int4,
volume_count int4)
LOCATION ('gpfdist://mdw:8080/dat.txt')
FORMAT 'TEXT' (DELIMITER E'\t')
LOG ERRORS INTO load_e_fre2 SEGMENT REJECT LIMIT 500 rows;


[gpadmin@mdw data]$ cat -vet dat.txt
144^I1836^I2^I2^I2$
144^I1836^I2^I2^I2$
144^I1836^I2^I2^I2$
144^I1836^I2^I2^I2$

insert into fre2_new ( ngram, year, match_count, page_count, volume_count) select * from fre2;

gpadmin=# select * from fre2_new;
 id | ngram | year | match_count | page_count | volume_count
----+-------+------+-------------+------------+--------------
  3 | 144   | 1836 |           2 |          2 |            2
  1 | 144   | 1836 |           2 |          2 |            2
  4 | 144   | 1836 |           2 |          2 |            2
  2 | 144   | 1836 |           2 |          2 |            2