2017-08-03 71 views
5

s3 grubundan csv verilerini okumaya ve AWS Athena'da bir tablo oluşturmaya çalışıyorum. Tablo, oluşturulduğunda CSV dosyamın başlık bilgilerini atlayamadı.S3'te bir csv dosyasından veri okurken ve aws athena'da bir tablo oluştururken, üstbilgileri nasıl atlarız.

Sorgu Örnek:

CREATE EXTERNAL TABLE IF NOT EXISTS table_name ( `event_type_id` 
    string, `customer_id` string, `date` string, `email` string) 
    ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde' 
    WITH 
    SERDEPROPERTIES ( "separatorChar" = "|", "quoteChar"  = "\"") 
    LOCATION 's3://location/' 
    TBLPROPERTIES ("skip.header.line.count"="1"); 

skip.header.line.count çalışmak görünmüyor. Fakat bu işe yaramıyor. Sanırım Aws'ın bununla bir sorunu var. Bunun üzerinden ulaşabileceğim başka bir yol var mı?

cevap

1

Bu Redshift çalışır şudur: İsterseniz

Sen, diğer özellikleri ile birlikte table properties ('skip.header.line.count'='1') kullanmak örn istiyorum 'numRows'='100'. İşte bir örnek: Burada

create external table exreddb1.test_table 
(ID BIGINT 
,NAME VARCHAR 
) 
row format delimited 
fields terminated by ',' 
stored as textfile 
location 's3://mybucket/myfolder/' 
table properties ('numRows'='100', 'skip.header.line.count'='1'); 
+0

AWS Redshift SQL dokümantasyon, http://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_EXTERNAL_TABLE.html "Dış Masa Aç" üzerine var – TheWalkingData

1

Bu bilinen bir eksikliktir.

gördüğüm en iyi yöntem

tweeted by Eric Hammond oldu:

...WHERE date NOT LIKE '#%' 

Bu Query sırasında başlık satırları atlamak gibi görünüyor. Nasıl çalıştığından emin değilim ama NULL'ları atlamak için bir yöntem olabilir.