2017-11-10 3 views
1

私はここに、単純なCSVファイルを持っているAWSアテナテーブルに.CSV整数に変換することができないが、私はAWS上でS3バケットにアップロード

Joe, 30, Male, 3 
Winston, 40, Male, 7 
Emily, 18, Female, 5 
Wendy, 32, Female, 4 

値。その後、アテナを使用して、私はデータがname string, age int, gender string, consumed int

表が正常に作成されるよう

  • 列をformtとして

    • 正しいS3バケットパス
    • .CSVでテーブルを作成したが、私はクエリを実行するときそれはnamegenderしかありません。列ageおよびconsumedは、すべてのエントリで空です。何か案は?

  • +0

    「表の記述」とは何ですか? http://docs.aws.amazon.com/athena/latest/ug/ddl/describe-table.html –

    +0

    '名前はSTRING' '年齢\t \t '性別int' \t STRING' \t ' \t int型を消費し\t ' –

    +0

    DESCRIBEからの実際の出力を投稿してください。また、実行しているクエリを投稿してください。 –

    答えて

    1

    スペースは、定義されたデータ型で希望する値を取得できない原因です。テストの握手のために、すべての文字列を作成して印刷してみると、印刷された値のスペースも表示されます。

    私の最初の選択は、データ自体からスペースを削除することです。しかし、データから空白を削除することが簡単でない場合は、それらをそのまま保ち、それらの列を文字列としてテーブルを作成することができます。次に、すべてのスペースを最初に削除してintにキャストすることで、内部的にintに変換することができます。たとえば、

    select cast(replace(age, '<whitespace>') as int) from <tablename> 
    

    置換すると、文字列からすべての空白が削除されます。そして、キャストは文字列を整数に変換します。 が消費された場合は、と同じことができます。

    関連する問題