Membongkar data ke Amazon S3 - Amazon Redshift

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Membongkar data ke Amazon S3

Amazon Redshift membagi hasil pernyataan pilih di satu set file, satu atau beberapa file per irisan node, untuk menyederhanakan pemuatan ulang data secara paralel. Atau, Anda dapat menentukan yang MEMBONGKAR harus menulis hasil serial ke satu atau lebih file dengan menambahkan opsi PARALLEL OFF. Anda dapat membatasi ukuran file di Amazon S3 dengan menentukan parameter MAXFILESIZE. UNLOAD secara otomatis mengenkripsi file data menggunakan enkripsi sisi server Amazon S3 (SSE-S3).

Anda dapat menggunakan pernyataan pilih apa pun dalam perintah UNLOAD yang didukung Amazon Redshift, kecuali untuk pilih yang menggunakan klausa LIMIT di seleksi luar. Misalnya, Anda dapat menggunakan pernyataan pilih yang menyertakan kolom tertentu atau yang menggunakan klausa where untuk menggabungkan beberapa tabel. Jika kueri Anda berisi tanda kutip (melampirkan nilai literal, misalnya), Anda harus menghindarinya dalam teks kueri (\ '). Untuk informasi selengkapnya, lihat referensi SELECT perintah. Untuk informasi selengkapnya tentang menggunakan klausa LIMIT, lihat Catatan penggunaan perintah UNLOAD.

Misalnya, perintah UNLOAD berikut mengirimkan konten tabel VENUE ke bucket Amazon s3://DOC-EXAMPLE-BUCKET/tickit/unload/ S3.

unload ('select * from venue') to 's3://DOC-EXAMPLE-BUCKET/tickit/unload/venue_' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole';

Nama file yang dibuat oleh contoh sebelumnya termasuk awalan 'venue_'.

venue_0000_part_00 venue_0001_part_00 venue_0002_part_00 venue_0003_part_00

Secara default, UNLOAD menulis data secara paralel dengan beberapa file, sesuai dengan jumlah irisan dalam cluster. Untuk menulis data ke satu file, tentukan PARALLEL OFF. UNLOAD menulis data secara serial, diurutkan secara mutlak sesuai dengan klausa ORDER BY, jika digunakan. Ukuran maksimum untuk file data adalah 6,2 GB. Jika ukuran data lebih besar dari maksimum, UNLOAD membuat file tambahan, masing-masing hingga 6,2 GB.

Contoh berikut menulis konten VENUE ke satu file. Hanya satu file yang diperlukan karena ukuran file kurang dari 6,2 GB.

unload ('select * from venue') to 's3://DOC-EXAMPLE-BUCKET/tickit/unload/venue_' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' parallel off;
catatan

Perintah UNLOAD dirancang untuk menggunakan pemrosesan paralel. Sebaiknya biarkan PARALLEL diaktifkan untuk sebagian besar kasus, terutama jika file akan digunakan untuk memuat tabel menggunakan perintah COPY.

Dengan asumsi total ukuran data untuk VENUE adalah 5 GB, contoh berikut menulis isi VENUE ke 50 file, masing-masing berukuran 100 MB.

unload ('select * from venue') to 's3://DOC-EXAMPLE-BUCKET/tickit/unload/venue_' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' parallel off maxfilesize 100 mb;

Jika Anda menyertakan awalan dalam string jalur Amazon S3, UNLOAD akan menggunakan awalan tersebut untuk nama file.

unload ('select * from venue') to 's3://DOC-EXAMPLE-BUCKET/tickit/unload/venue_' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole';

Anda dapat membuat file manifes yang mencantumkan file bongkar muat dengan menentukan opsi MANIFEST dalam perintah UNLOAD. Manifes adalah file teks dalam format JSON yang secara eksplisit mencantumkan URL setiap file yang ditulis ke Amazon S3.

Contoh berikut mencakup opsi manifes.

unload ('select * from venue') to 's3://DOC-EXAMPLE-BUCKET/tickit/venue_' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' manifest;

Contoh berikut menunjukkan manifes untuk empat file bongkar.

{ "entries": [ {"url":"s3://DOC-EXAMPLE-BUCKET/tickit/venue_0000_part_00"}, {"url":"s3://DOC-EXAMPLE-BUCKET/tickit/venue_0001_part_00"}, {"url":"s3://DOC-EXAMPLE-BUCKET/tickit/venue_0002_part_00"}, {"url":"s3://DOC-EXAMPLE-BUCKET/tickit/venue_0003_part_00"} ] }

File manifes dapat digunakan untuk memuat file yang sama dengan menggunakan COPY dengan opsi MANIFEST. Untuk informasi selengkapnya, lihat Menggunakan manifes untuk menentukan file data.

Setelah Anda menyelesaikan operasi UNLOAD, konfirmasikan bahwa data telah dibongkar dengan benar dengan menavigasi ke bucket Amazon S3 tempat UNLOAD menulis file. Anda akan melihat satu atau lebih file bernomor per irisan, dimulai dengan angka nol. Jika Anda menentukan opsi MANIFEST, Anda juga akan melihat file yang diakhiri dengan 'manifest'. Sebagai contoh:

DOC-EXAMPLE-BUCKET/tickit/venue_0000_part_00 DOC-EXAMPLE-BUCKET/tickit/venue_0001_part_00 DOC-EXAMPLE-BUCKET/tickit/venue_0002_part_00 DOC-EXAMPLE-BUCKET/tickit/venue_0003_part_00 DOC-EXAMPLE-BUCKET/tickit/venue_manifest

Anda dapat secara terprogram mendapatkan daftar file yang ditulis ke Amazon S3 dengan memanggil operasi daftar Amazon S3 setelah UNLOAD selesai. Anda juga dapat menanyakan STL_UNLOAD_LOG.

Query berikut mengembalikan pathname untuk file yang dibuat oleh UNLOAD. PG_LAST_QUERY_IDFungsi mengembalikan query terbaru.

select query, substring(path,0,40) as path from stl_unload_log where query=2320 order by path; query | path -------+-------------------------------------- 2320 | s3://DOC-EXAMPLE-BUCKET/venue0000_part_00 2320 | s3://DOC-EXAMPLE-BUCKET/venue0001_part_00 2320 | s3://DOC-EXAMPLE-BUCKET/venue0002_part_00 2320 | s3://DOC-EXAMPLE-BUCKET/venue0003_part_00 (4 rows)

Jika jumlah datanya sangat besar, Amazon Redshift mungkin membagi file menjadi beberapa bagian per irisan. Sebagai contoh:

venue_0000_part_00 venue_0000_part_01 venue_0000_part_02 venue_0001_part_00 venue_0001_part_01 venue_0001_part_02 ...

Perintah UNLOAD berikut mencakup string yang dikutip dalam pernyataan select, sehingga tanda kutip diloloskan (). =\'OH\' '

unload ('select venuename, venuecity from venue where venuestate=\'OH\' ') to 's3://DOC-EXAMPLE-BUCKET/tickit/venue/ ' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole';

Secara default, UNLOAD akan gagal daripada menimpa file yang ada di bucket tujuan. Untuk menimpa file yang ada, termasuk file manifes, tentukan opsi ALLOWOVERWRITE.

unload ('select * from venue') to 's3://DOC-EXAMPLE-BUCKET/venue_pipe_' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' manifest allowoverwrite;