Greenplum ngram数据集:列

时间:2016-07-21 21:12:27

标签: csv greenplum

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

我有一台运行gpfdist的服务器。

我已经创建了外部表格(在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
   ....

接下来,我测试外部表:

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

我进入我的日志错误表并看到:

  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

关于改变什么的任何想法?

1 个答案:

答案 0 :(得分:1)

在这种情况下,

串行列将成为您的问题。但是您看到的错误似乎与解析时使用的分隔符有关。你使用标签或空格?

下面的

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

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