2017-06-07 22 views
0

データをロード中にRedshiftコピーコマンドに複数の区切り文字を指定する方法はありますか。Redshiftコピーコマンドに複数の区切り文字を指定する

は、私は次の形式を有するデータファイルを持っている: -

1 | ab | CD | ef

2 | gh | ij | KL

私はこのようなコマンドを使用しています: -

COPY MY_TBL 
    FROM 's3://s3-file-path' 
    iam_role 'arn:aws:iam::ddfjhgkjdfk' 
    manifest 
    IGNOREHEADER 1 
gzip delimiter '|'; 

フィールドが区切られ|レコードは改行を使用して区切られます。このデータをRedshiftにコピーする方法を教えてください。上記のクエリで区切り文字にエラーが見つかりません。

答えて

0

いいえ、区切り文字は1文字です。 Data Format Parametersから

:(|)、コンマ(、)、またはタブ(\トン

は、パイプ文字として入力ファイル内のフィールドを、分離するために使用される単一のASCII文字を指定します。 )。

パイプ区切り記号を使用してファイルをインポートしてから、スペースをオフにしてSTRIP()へのUPDATEコマンドを実行できます。

0

上記のエラーは、データ内の何かがCOPYコマンドを失敗させていることを示しています。これは、ファイルのエンコーディングからそこにあるいくつかのファンキーなデータまで、さまざまなものがあります。私は区切り文字(\ t)が取り出されるのを妨げていたデータ内の末尾のバックスラッシュと組み合わせたESCAPEパラメータであることが判明した "区切り文字が見つかりません"というエラーで最近苦労しました。 - このシステム表は、COPY操作中に赤方偏移によって記録されたエラーの詳細が含まれてい

stl_load_errors

幸いにも、あなたが問題を絞り込む助けるために取ることができるいくつかのステップがあります。これは、問題の原因となっているデータファイル内の行番号を識別できる必要があります。

NOLOAD - Redshiftに実際にデータをロードせずにコピーコマンドを実行できるようになります。これにより、COPY ANALYZE操作が実行され、stl_load_errorsテーブルのエラーが強調表示されます。

FILLRECORD - これにより、Redshiftは入力データに欠落していると見なされる列を「塗りつぶす」ことができます。これは本質的に、不自然な権利のあるデータファイルを処理することですが、「区切り文字が見つかりません」というエラーにつながる問題の診断に役立ちます。これにより、Redshiftにデータをロードし、次にデータベース内でクエリを実行して、列がどこからずれ始めるかを確認できます。

あなたが投稿したサンプルからは、セットアップはよさそうですが、明らかにこれは画像全体ではありません。上記のオプションは、問題を解決するのに役立つ行を絞り込むのに役立ちます。

関連する問題