Amazon S3 から固定幅データをロードする - Amazon Redshift

Amazon S3 から固定幅データをロードする

固定幅データファイルでは、データの各列の長さが統一されています。固定幅データファイルの各フィールドでは、長さと位置がまったく同じです。固定幅データファイルの文字データ (CHAR と VARCHAR) については、幅を統一するために、プレースホルダーとして先行または後続スペースを含める必要があります。整数については、プレースホルダーとして先行ゼロを含める必要があります。固定幅データファイルには列を分割する区切り文字がありません。

固定幅データファイルを既存のテーブルにロードするには、COPY コマンドで FIXEDWIDTH パラメータを使用します。データを正しくロードするには、テーブル仕様が fixedwidth_spec の値に一致する必要があります。

ファイルからテーブルに固定幅データをロードするには、次のコマンドを発行します。

copy table_name from 's3://mybucket/prefix' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' fixedwidth 'fixedwidth_spec';

fixedwidth_spec パラメータは、各列の ID と各列の幅がコロンで区切られて指定されている文字列です。column:width ペアはカンマで区切られています。ID には数字、文字、またはその 2 つの組み合わせを自由に選択できます。ID とテーブル自体の間には何の関係もありません。そのため、仕様にテーブルと同じ順序で列を含める必要があります。

次の 2 つの例では同じ仕様を示していますが、最初の例では数字の ID を使用し、2 つ目の例では文字列の ID を使用しています。

'0:3,1:25,2:12,3:2,4:6'
'venueid:3,venuename:25,venuecity:12,venuestate:2,venueseats:6'

次の例では、前述の仕様を使用して VENUE テーブルにロードするサンプルの固定幅データを示しています。

1 Toyota Park Bridgeview IL0 2 Columbus Crew Stadium Columbus OH0 3 RFK Stadium Washington DC0 4 CommunityAmerica Ballpark Kansas City KS0 5 Gillette Stadium Foxborough MA68756

次の COPY コマンドではこのデータセットが VENUE テーブルにロードされます。

copy venue from 's3://mybucket/data/venue_fw.txt' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' fixedwidth 'venueid:3,venuename:25,venuecity:12,venuestate:2,venueseats:6';