23

テーブルを Amazon RedShift から MySQL に移行したいのですが、「アンロード」を使用すると、MySQL に直接インポートするのが難しい複数のデータ ファイルが生成されます。

テーブルを単一の CSV ファイルにアンロードして、MySQL に直接インポートできるようにする方法はありますか?

4

5 に答える 5

44

単一のファイルに送信するには、並列オフを使用します

unload ('select * from venue')
to 's3://mybucket/tickit/unload/venue_' credentials 
'aws_access_key_id=<access-key-id>;aws_secret_access_key=<secret-access-key>'
parallel off;

また、ダウンロード用にファイルをさらに小さくするために、Gzip を使用することをお勧めします。

unload ('select * from venue')
to 's3://mybucket/tickit/unload/venue_' credentials 
'aws_access_key_id=<access-key-id>;aws_secret_access_key=<secret-access-key>'
parallel off
gzip;
于 2014-06-24T14:37:40.493 に答える
3

確かに、Redshift に出力ファイルを 1 つだけ生成させる方法はありません。

標準の UNLOAD では、システム スライスの数に相当する出力ファイルが作成されます。つまり、8 つのスライスを持つシステムでは、1 回のアンロード コマンドで 8 つのファイルが作成されます (これが最も高速なアンロード方法です)。

Unload コマンドに PARALLEL OFF 句を追加すると、出力は単一のファイルとして作成され、データ抽出のサイズが 6.25GB を超えない限り、Redshift は自動的にファイルを新しいチャンクに分割します。 .

圧縮された出力ファイルを生成する場合にも同じことが当てはまります (もちろん、ファイルにより多くのレコードを収容できることを考えると、単一の出力ファイルを生成する可能性が高くなります)。

于 2015-09-25T14:15:29.593 に答える
2

いいえ。{マニフェストを使用して、Redshift にすべての出力を 1 つのファイルに送信するように指示できます。以前の回答は間違っていました。ロードにはマニフェストを使用しましたが、アンロードには使用しませんでした。

単一のファイルを取得するには、次の 2 つの方法が考えられます。

  1. 簡単: SELECT … LIMIT クエリを実際の出力クエリの周りにラップします。これはSO の回答ですが、これは最大 20 億行に制限されています。
  2. 難しい: Unixcatユーティリティを使用してファイルを結合します cat File1.txt File2.txt > union.txt。これには、最初に S3 からファイルをダウンロードする必要があります。
于 2013-12-04T09:28:53.723 に答える