メニュー
Amazon Redshift
データベース開発者ガイド (API Version 2012-12-01)

データを複数のファイルに分割する

テーブルには 1 つのファイルからデータをロードすることも、複数に分割されたファイルからデータをロードすることができます。COPY コマンドを実行すると、複数のファイルから並列でデータをロードすることができます。セットに共通プレフィックスまたはプレフィックスキーを指定するか、マニフェストファイルにファイルのリストを明示的に指定することで、複数のファイルをロードできます。

注記

データを複数のファイルに分割し、並列処理の長所を最大限に活用することをお勧めします。

ファイルの数がクラスターのスライスの数の倍数になるようにデータをファイルに分割します。そうすることで、Amazon Redshift はスライス間でデータを均等に分割できます。ノードあたりのスライスの数は、クラスターのノードサイズによって決まります。たとえば、各 DS1.XL コンピューティングノードには 2 つのスライスがあり、各 DS1.8XL コンピューティングノードには 32 個のスライスがあります。それぞれのノードサイズにあるスライスの数については、Amazon Redshift Cluster Management Guide の「クラスターおよびノードについて」を参照してください。

ノードはいずれも並列クエリ実行に関与し、スライス間でできるだけ均等に分散されたデータを処理します。クラスターに DS1.XL ノードが 2 つある場合、データを 4 つのファイルまたは 4 の倍数のファイルに分割します。Amazon Redshift はワークロードを分割するときにファイルサイズを考慮しません。そのため、ファイルを概ね同じサイズにし、それぞれが圧縮後に 1 MB ~ 1 GB になるようにする必要があります。

オブジェクトプレフィックスを使ってロードファイルを識別する場合、各ファイルの名前に共通のプレフィックスを付けます。例えば、venue.txt ファイルを次のように 4 つのファイルに分割します。

Copy
venue.txt.1 venue.txt.2 venue.txt.3 venue.txt.4

複数のファイルをバケットのフォルダーに置く場合、プレフィックスとしてフォルダー名を指定できます。COPY を実行すると、フォルダー内のすべてのファイルがロードされます。ロードするファイルが複数のバケットまたはフォルダーに分散している場合は、それらのファイルのリストをマニフェストファイルに明示的に指定します。