Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
MEMBONGKAR
Bongkar hasil kueri ke satu atau beberapa file teks, JSON, atau Apache Parquet di Amazon S3, menggunakan enkripsi sisi server Amazon S3 (SSE-S3). Anda juga dapat menentukan enkripsi sisi server dengan AWS Key Management Service kunci (SSE-KMS) atau enkripsi sisi klien dengan kunci yang dikelola pelanggan.
Secara default, format file yang dibongkar adalah teks pipe-delimited (). |
Anda dapat mengelola ukuran file di Amazon S3, dan dengan ekstensi jumlah file, dengan mengatur parameter MAXFILESIZE. Pastikan rentang IP S3 ditambahkan ke daftar izin Anda. Untuk mempelajari lebih lanjut tentang rentang IP S3 yang diperlukan, lihat Isolasi jaringan.
Anda dapat membongkar hasil kueri Amazon Redshift ke data lake Amazon S3 Anda di Apache Parquet, format penyimpanan kolom terbuka yang efisien untuk analitik. Format parket hingga 2x lebih cepat untuk dibongkar dan mengkonsumsi penyimpanan hingga 6x lebih sedikit di Amazon S3, dibandingkan dengan format teks. Ini memungkinkan Anda untuk menyimpan transformasi data dan pengayaan yang telah Anda lakukan di Amazon S3 ke dalam data lake Amazon S3 Anda dalam format terbuka. Anda kemudian dapat menganalisis data Anda dengan Redshift Spectrum dan AWS layanan lain seperti Amazon Athena, Amazon EMR, dan Amazon AI. SageMaker
Untuk informasi selengkapnya dan contoh skenario tentang penggunaan perintah UNLOAD, lihatMembongkar data di Amazon Redshift.
Hak istimewa dan izin yang diperlukan
Agar perintah UNLOAD berhasil, setidaknya pilih hak istimewa pada data dalam database diperlukan, bersama dengan izin untuk menulis ke lokasi Amazon S3. Untuk informasi tentang izin untuk mengakses AWS sumber daya untuk perintah UNLOAD, lihat. Izin untuk mengakses Sumber Daya lainnya AWS
Untuk menerapkan izin hak istimewa terkecil, ikuti rekomendasi ini untuk hanya memberikan izin, sesuai kebutuhan, kepada pengguna yang menjalankan perintah.
Pengguna harus memiliki hak pilih pada data. Untuk informasi tentang cara membatasi hak istimewa database, lihatHIBAH.
Pengguna memerlukan izin untuk mengambil peran IAM untuk menulis ke bucket Amazon S3 di bucket Anda. Akun AWS Untuk membatasi akses bagi pengguna database untuk mengambil peran, lihat Membatasi akses ke peran IAM di Panduan Manajemen Amazon Redshift.
Pengguna membutuhkan akses ke bucket Amazon S3. Untuk membatasi izin menggunakan kebijakan bucket Amazon S3, lihat Kebijakan Bucket untuk Amazon S3 di Panduan Pengguna Layanan Penyimpanan Sederhana Amazon.
Sintaks
UNLOAD ('select-statement') TO 's3://object-path/name-prefix' authorization [ option, ...] where authorization is IAM_ROLE { default | 'arn:aws:iam::
<Akun AWS-id-1>
:role/<role-name>
[,arn:aws:iam::<Akun AWS-id-2>
:role/<role-name>
][,...]' } where option is | [ FORMAT [ AS ] ] CSV | PARQUET | JSON | PARTITION BY ( column_name [, ... ] ) [ INCLUDE ] | MANIFEST [ VERBOSE ] | HEADER | DELIMITER [ AS ] 'delimiter-char' | FIXEDWIDTH [ AS ] 'fixedwidth-spec' | ENCRYPTED [ AUTO ] | BZIP2 | GZIP | ZSTD | ADDQUOTES | NULL [ AS ] 'null-string' | ESCAPE | ALLOWOVERWRITE | CLEANPATH | PARALLEL [ { ON | TRUE } | { OFF | FALSE } ] | MAXFILESIZE [AS] max-size [ MB | GB ] | ROWGROUPSIZE [AS] size [ MB | GB ] | REGION [AS] 'aws-region' } | EXTENSION 'extension-name'
Parameter
- ('pilih-pernyataan')
-
Kueri SELECT. Hasil kueri dibongkar. Dalam kebanyakan kasus, ada baiknya membongkar data dalam urutan yang diurutkan dengan menentukan klausa ORDER BY dalam kueri. Pendekatan ini menghemat waktu yang diperlukan untuk mengurutkan data saat dimuat ulang.
Kueri harus dilampirkan dalam tanda kutip tunggal seperti yang ditunjukkan berikut:
('select * from venue order by venueid')
catatan
Jika kueri Anda berisi tanda kutip (misalnya untuk melampirkan nilai literal), letakkan literal di antara dua set tanda kutip tunggal—Anda juga harus melampirkan kueri di antara tanda kutip tunggal:
('select * from venue where venuestate=''NV''')
- KE 's3://jalur-objek/nama-awalan '
-
Jalur lengkap, termasuk nama bucket, ke lokasi di Amazon S3 tempat Amazon Redshift menulis objek file keluaran, termasuk file manifes jika MANIFEST ditentukan. Nama objek diawali dengan nama-awalan. Jika Anda menggunakan
PARTITION BY
, garis miring maju (/) secara otomatis ditambahkan ke akhir nilai nama-awalan jika diperlukan. Untuk keamanan tambahan, UNLOAD terhubung ke Amazon S3 menggunakan koneksi HTTPS. Secara default, UNLOAD menulis satu atau lebih file per irisan. UNLOAD menambahkan nomor irisan dan nomor bagian ke awalan nama yang ditentukan sebagai berikut:
.<object-path>
/<name-prefix>
<slice-number>
_part_<part-number>
Jika MANIFEST ditentukan, file manifes ditulis sebagai berikut:
.<object_path>
/<name_prefix>
manifestJika PARALLEL ditentukan OFF, file data ditulis sebagai berikut:
.<object_path>
/<name_prefix>
<part-number>
UNLOAD secara otomatis membuat file terenkripsi menggunakan enkripsi sisi server Amazon S3 (SSE), termasuk file manifes jika MANIFEST digunakan. Perintah COPY secara otomatis membaca file terenkripsi sisi server selama operasi pemuatan. Anda dapat mengunduh file terenkripsi sisi server secara transparan dari bucket menggunakan konsol Amazon S3 atau API. Untuk informasi selengkapnya, lihat Melindungi Data Menggunakan Enkripsi Sisi Server.
Untuk menggunakan enkripsi sisi klien Amazon S3, tentukan opsi TERENKRIPSI.
penting
REGION diperlukan jika bucket Amazon S3 tidak Wilayah AWS sama dengan database Amazon Redshift.
- otorisasi
-
Perintah UNLOAD memerlukan otorisasi untuk menulis data ke Amazon S3. Perintah UNLOAD menggunakan parameter yang sama dengan perintah COPY yang digunakan untuk otorisasi. Untuk informasi selengkapnya, lihat Parameter otorisasi di referensi sintaks perintah COPY.
- IAM_ROLE {default | 'arn:aws:iam: ::role/ '
<Akun AWS-id-1>
<role-name>
-
Gunakan kata kunci default agar Amazon Redshift menggunakan peran IAM yang ditetapkan sebagai default dan terkait dengan cluster saat perintah UNLOAD berjalan.
Gunakan Amazon Resource Name (ARN) untuk peran IAM yang digunakan klaster Anda untuk autentikasi dan otorisasi. Jika Anda menentukan IAM_ROLE, Anda tidak dapat menggunakan ACCESS_KEY_ID dan SECRET_ACCESS_KEY, SESSION_TOKEN, atau CREDENTIALS. IAM_ROLE dapat dirantai. Untuk informasi selengkapnya, lihat Merantai peran IAM di Panduan Manajemen Pergeseran Merah Amazon.
- [FORMAT [SEBAGAI]] CSV | PARKET | JSON
-
Kata kunci untuk menentukan format bongkar untuk mengganti format default.
Saat CSV, bongkar ke file teks dalam format CSV menggunakan karakter koma (,) sebagai pembatas default. Jika bidang berisi pembatas, tanda kutip ganda, karakter baris baru, atau pengembalian carriage, maka bidang dalam file yang dibongkar diapit tanda kutip ganda. Tanda kutip ganda dalam bidang data diloloskan oleh tanda kutip ganda tambahan. Saat nol baris dibongkar, Amazon Redshift mungkin menulis objek Amazon S3 kosong.
Saat PARQUET, bongkar ke file dalam format Apache Parquet versi 1.0. Secara default, setiap grup baris dikompresi menggunakan kompresi SNAPPY. Untuk informasi lebih lanjut tentang format Parket Apache, lihat Parket.
Saat JSON, bongkar ke file JSON dengan setiap baris berisi objek JSON, mewakili catatan lengkap dalam hasil kueri. Amazon Redshift mendukung penulisan JSON bersarang saat hasil kueri berisi kolom SUPER. Untuk membuat objek JSON yang valid, nama setiap kolom dalam kueri harus unik. Dalam file JSON, nilai boolean diturunkan sebagai
t
atauf
, dan nilai NULL diturunkan sebagai.null
Saat nol baris dibongkar, Amazon Redshift tidak menulis objek Amazon S3.Kata kunci FORMAT dan AS bersifat opsional. Anda tidak dapat menggunakan CSV dengan ESCAPE, FIXEDWIDTH, atau ADDQUOTES. Anda tidak dapat menggunakan PARQUET dengan DELIMITER, FIXEDWIDTH, ADDQUOTES, ESCAPE, NULL AS, HEADER, GZIP, atau ZSTD. BZIP2 PARQUET dengan ENCRYPTED hanya didukung dengan enkripsi sisi server dengan kunci (SSE-KMS). AWS Key Management Service Anda tidak dapat menggunakan JSON dengan DELIMITER, HEADER, FIXEDWIDTH, ADDQUOTES, ESCAPE, atau NULL AS.
- PARTISI OLEH (column_name [,...]) [TERMASUK]
-
Menentukan kunci partisi untuk operasi bongkar. UNLOAD secara otomatis mempartisi file output ke dalam folder partisi berdasarkan nilai kunci partisi, mengikuti konvensi Apache Hive. Misalnya, file Parket milik tahun partisi 2019 dan bulan September memiliki awalan berikut:.
s3://amzn-s3-demo-bucket/my_prefix/year=2019/month=September/000.parquet
Nilai untuk column_name harus berupa kolom dalam hasil kueri yang dibongkar.
Jika Anda menentukan PARTITION BY dengan opsi INCLUDE, kolom partisi tidak dihapus dari file yang dibongkar.
Amazon Redshift tidak mendukung literal string di klausa PARTITION BY.
- MANIFES [BERTELE-TELE]
-
Membuat file manifes yang secara eksplisit mencantumkan detail untuk file data yang dibuat oleh proses UNLOAD. Manifes adalah file teks dalam format JSON yang mencantumkan URL setiap file yang ditulis ke Amazon S3.
Jika MANIFEST ditentukan dengan opsi VERBOSE, manifes mencakup rincian berikut:
-
Nama kolom dan tipe data, dan untuk tipe data CHAR, VARCHAR, atau NUMERIK, dimensi untuk setiap kolom. Untuk tipe data CHAR dan VARCHAR, dimensinya adalah panjangnya. Untuk tipe data DECIMAL atau NUMERIK, dimensinya presisi dan skala.
-
Jumlah baris diturunkan ke setiap file. Jika opsi HEADER ditentukan, jumlah baris termasuk baris header.
-
Ukuran file total dari semua file yang dibongkar dan jumlah baris total diturunkan ke semua file. Jika opsi HEADER ditentukan, jumlah baris termasuk baris header.
-
Penulis. Penulis selalu “Amazon Redshift”.
Anda dapat menentukan VERBOSE hanya mengikuti MANIFEST.
File manifes ditulis ke awalan jalur Amazon S3 yang sama dengan file bongkar muat dalam format.
<object_path_prefix>manifest
Misalnya, jika UNLOAD menentukan awalan jalur Amazon S3 '', lokasi file manifes adalahs3://amzn-s3-demo-bucket/venue_
''.s3://amzn-s3-demo-bucket/venue_manifest
-
- HEADER
-
Menambahkan baris header yang berisi nama kolom di bagian atas setiap file output. Opsi transformasi teks, seperti CSV, DELIMITER, ADDQUOTES, dan ESCAPE, juga berlaku untuk baris header. Anda tidak dapat menggunakan HEADER dengan FIXEDWIDTH.
- PEMBATAS SEBAGAI 'delimiter_character'
-
Menentukan karakter ASCII tunggal yang digunakan untuk memisahkan bidang dalam file output, seperti karakter pipa (|), koma (,), atau tab (\ t). Pembatas default untuk file teks adalah karakter pipa. Pembatas default untuk file CSV adalah karakter koma. Kata kunci AS adalah opsional. Anda tidak dapat menggunakan DELIMITER dengan FIXEDWIDTH. Jika data berisi karakter pembatas, Anda perlu menentukan opsi ESCAPE untuk keluar dari pembatas, atau gunakan ADDQUOTES untuk melampirkan data dalam tanda kutip ganda. Atau, tentukan pembatas yang tidak terkandung dalam data.
- FIXEDWIDTH 'fixedwidth_spec'
-
Membongkar data ke file di mana setiap lebar kolom adalah panjang tetap, bukan dipisahkan oleh pembatas. Fixedwidth_spec adalah string yang menentukan jumlah kolom dan lebar kolom. Kata kunci AS adalah opsional. Karena FIXEDWIDTH tidak memotong data, spesifikasi untuk setiap kolom dalam pernyataan UNLOAD harus setidaknya sepanjang panjang entri terpanjang untuk kolom itu. Format untuk fixedwidth_spec ditunjukkan di bawah ini:
'colID1:colWidth1,colID2:colWidth2, ...'
Anda tidak dapat menggunakan FIXEDWIDTH dengan DELIMITER atau HEADER.
- TERENKRIPSI [OTOMATIS]
-
Menentukan bahwa file output di Amazon S3 dienkripsi menggunakan enkripsi sisi server Amazon S3 atau enkripsi sisi klien. Jika MANIFEST ditentukan, file manifes juga dienkripsi. Untuk informasi selengkapnya, lihat Membongkar file data terenkripsi. Jika Anda tidak menentukan parameter ENCRYPTED, UNLOAD secara otomatis membuat file terenkripsi menggunakan enkripsi sisi server Amazon S3 dengan kunci enkripsi -managed (SSE-S3). AWS
Untuk ENCRYPTED, Anda mungkin ingin membongkar ke Amazon S3 menggunakan enkripsi sisi server dengan kunci (SSE-KMS). AWS KMS Jika demikian, gunakan KMS_KEY_ID parameter untuk memberikan ID kunci. Anda tidak dapat menggunakan CREDENTIALS parameter dengan parameter KMS_KEY_ID. Jika Anda menjalankan perintah UNLOAD untuk data menggunakan KMS_KEY_ID, Anda kemudian dapat melakukan operasi COPY untuk data yang sama tanpa menentukan kunci.
Untuk membongkar ke Amazon S3 menggunakan enkripsi sisi klien dengan kunci simetris yang disediakan pelanggan, berikan kunci dengan salah satu dari dua cara. Untuk memberikan kunci, gunakan MASTER_SYMMETRIC_KEY parameter atau
master_symmetric_key
bagian dari string CREDENTIALS kredensyal. Jika Anda membongkar data menggunakan kunci simetris root, pastikan Anda menyediakan kunci yang sama saat Anda melakukan operasi COPY untuk data terenkripsi.UNLOAD tidak mendukung enkripsi sisi server Amazon S3 dengan kunci yang disediakan pelanggan (SSE-C).
Jika ENCRYPTED AUTO digunakan, perintah UNLOAD akan mengambil kunci AWS KMS enkripsi default pada properti bucket Amazon S3 target dan mengenkripsi file yang ditulis ke Amazon S3 dengan kunci tersebut. AWS KMS Jika bucket tidak memiliki kunci AWS KMS enkripsi default, UNLOAD secara otomatis membuat file terenkripsi menggunakan enkripsi sisi server Amazon Redshift dengan kunci enkripsi -managed (SSE-S3). AWS Anda tidak dapat menggunakan opsi ini dengan KMS_KEY_ID, MASTER_SYMMETRIC_KEY, atau CREDENTIALS yang berisi master_symmetric_key.
- KMS_KEY_ID 'id kunci'
-
Menentukan ID kunci untuk kunci AWS Key Management Service (AWS KMS) yang akan digunakan untuk mengenkripsi file data di Amazon S3. Untuk informasi lebih lanjut, lihat Apa itu AWS Key Management Service? Jika Anda menentukan KMS_KEY_ID, Anda harus menentukan parameter juga. ENCRYPTED Jika Anda menentukan KMS_KEY_ID, Anda tidak dapat mengautentikasi menggunakan parameter CREDENTIALS. Sebaliknya, gunakan salah satu IAM_ROLE atauACCESS_KEY_ID and SECRET_ACCESS_KEY.
- MASTER_SYMMETRIC_KEY 'root_key'
-
Menentukan kunci simetris root yang akan digunakan untuk mengenkripsi file data di Amazon S3. Jika Anda menentukan MASTER_SYMMETRIC_KEY, Anda harus menentukan parameter juga. ENCRYPTED Anda tidak dapat menggunakan MASTER_SYMMETRIC_KEY dengan parameter CREDENTIALS. Untuk informasi selengkapnya, lihat Memuat file data terenkripsi dari Amazon S3.
- BZIP2
-
Membongkar data ke satu atau lebih file terkompresi bzip2 per irisan. Setiap file yang dihasilkan ditambahkan dengan
.bz2
ekstensi. - GZIP
-
Membongkar data ke satu atau lebih file terkompresi gzip per irisan. Setiap file yang dihasilkan ditambahkan dengan
.gz
ekstensi. - ZSTD
-
Membongkar data ke satu atau lebih file terkompresi ZStandar per irisan. Setiap file yang dihasilkan ditambahkan dengan
.zst
ekstensi. - ADDQUOTES
-
Menempatkan tanda kutip di sekitar setiap bidang data yang dibongkar, sehingga Amazon Redshift dapat membongkar nilai data yang berisi pembatas itu sendiri. Misalnya, jika pembatas adalah koma, Anda dapat membongkar dan memuat ulang data berikut dengan sukses:
"1","Hello, World"
Tanpa tanda kutip tambahan, string
Hello, World
akan diurai sebagai dua bidang terpisah.Beberapa format output tidak mendukung ADDQUOTES.
Jika Anda menggunakan ADDQUOTES, Anda harus menentukan REMOVEQUOTES di COPY jika Anda memuat ulang data.
- NULL SEBAGAI 'null-string'
-
Menentukan string yang merupakan nilai null dalam membongkar file. Jika opsi ini digunakan, semua file output berisi string yang ditentukan sebagai pengganti nilai nol yang ditemukan dalam data yang dipilih. Jika opsi ini tidak ditentukan, nilai null diturunkan sebagai:
-
String dengan panjang nol untuk output yang dibatasi
-
String spasi putih untuk keluaran dengan lebar tetap
Jika string null ditentukan untuk pembongkaran lebar tetap dan lebar kolom keluaran kurang dari lebar string nol, perilaku berikut terjadi:
-
Bidang kosong adalah output untuk kolom non-karakter
-
Kesalahan dilaporkan untuk kolom karakter
Tidak seperti tipe data lain di mana string yang ditentukan pengguna mewakili nilai nol, Amazon Redshift mengekspor kolom data SUPER menggunakan format JSON dan merepresentasikannya sebagai null sebagaimana ditentukan oleh format JSON. Akibatnya, kolom data SUPER mengabaikan opsi NULL [AS] yang digunakan dalam perintah UNLOAD.
-
- MELARIKAN DIRI
-
Untuk kolom CHAR dan VARCHAR dalam file unload yang dibatasi, karakter escape (
\
) ditempatkan sebelum setiap kemunculan karakter berikut:-
Linefeed:
\n
-
Pengembalian kereta:
\r
-
Karakter pembatas ditentukan untuk data yang dibongkar.
-
Karakter melarikan diri:
\
-
Karakter tanda kutip:
"
atau'
(jika ESCAPE dan ADDQUOTES ditentukan dalam perintah UNLOAD).
penting
Jika Anda memuat data Anda menggunakan COPY dengan opsi ESCAPE, Anda juga harus menentukan opsi ESCAPE dengan perintah UNLOAD Anda untuk menghasilkan file output timbal balik. Demikian pula, jika Anda BONGKAR menggunakan opsi ESCAPE, Anda perlu menggunakan ESCAPE saat Anda MENYALIN data yang sama.
-
- ALLOWOVERWRITE
-
Secara default, UNLOAD gagal jika menemukan file yang mungkin akan ditimpa. Jika ALLOWOVERWRITE ditentukan, UNLOAD menimpa file yang ada, termasuk file manifes.
- JALAN BERSIH
-
Opsi CLEANPATH menghapus file yang ada yang terletak di jalur Amazon S3 yang ditentukan dalam klausa TO sebelum membongkar file ke lokasi yang ditentukan.
Jika Anda menyertakan klausa PARTITION BY, file yang ada dihapus hanya dari folder partisi untuk menerima file baru yang dihasilkan oleh operasi UNLOAD.
Anda harus memiliki
s3:DeleteObject
izin di ember Amazon S3. Untuk selengkapnya, lihat Kebijakan dan Izin di Amazon S3 di Panduan Pengguna Layanan Penyimpanan Sederhana Amazon. File yang Anda hapus dengan menggunakan opsi CLEANPATH dihapus secara permanen dan tidak dapat dipulihkan. Jika bucket Amazon S3 target mengaktifkan versi, BONGKAR dengan opsi CLEANPATH tidak akan menghapus versi file sebelumnya.Anda tidak dapat menentukan opsi CLEANPATH jika Anda menentukan opsi ALLOWOVERWRITE.
- PARALEL
-
Secara default, UNLOAD menulis data secara paralel dengan beberapa file, sesuai dengan jumlah irisan dalam cluster. Opsi default adalah ON atau TRUE. Jika PARALLEL OFF atau FALSE, UNLOAD menulis ke satu atau lebih file data secara serial, diurutkan secara mutlak sesuai dengan klausa ORDER BY, jika digunakan. Ukuran maksimum untuk file data adalah 6,2 GB. Jadi, misalnya, jika Anda membongkar 13, 4 GB data, UNLOAD membuat tiga file berikut.
s3://amzn-s3-demo-bucket/key000 6.2 GB s3://amzn-s3-demo-bucket/key001 6.2 GB s3://amzn-s3-demo-bucket/key002 1.0 GB
catatan
Perintah UNLOAD dirancang untuk menggunakan pemrosesan paralel. Sebaiknya biarkan PARALLEL diaktifkan untuk sebagian besar kasus, terutama jika file digunakan untuk memuat tabel menggunakan perintah COPY.
- MAXFILESIZE [AS] ukuran maks [MB | GB]
-
Menentukan ukuran maksimum file yang dibuat UNLOAD di Amazon S3. Tentukan nilai desimal antara 5 MB dan 6,2 GB. Kata kunci AS adalah opsional. Unit defaultnya adalah MB. Jika MAXFILESIZE tidak ditentukan, ukuran file maksimum default adalah 6,2 GB. Ukuran file manifes, jika digunakan, tidak terpengaruh oleh MAXFILESIZE.
- ROWGROUPSIZE [AS] ukuran [MB | GB]
-
Menentukan ukuran kelompok baris. Memilih ukuran yang lebih besar dapat mengurangi jumlah kelompok baris, mengurangi jumlah komunikasi jaringan. Tentukan nilai integer antara 32 MB dan 128 MB. Kata kunci AS adalah opsional. Unit defaultnya adalah MB.
Jika ROWGROUPSIZE tidak ditentukan, ukuran default adalah 32 MB. Untuk menggunakan parameter ini, format penyimpanan harus Parket dan tipe node harus ra3.4xlarge, ra3.16xlarge, atau dc2.8xlarge.
- WILAYAH [AS] 'aws-region'
-
Menentukan Wilayah AWS lokasi bucket Amazon S3 target berada. REGION diperlukan untuk UNLOAD ke bucket Amazon S3 yang tidak Wilayah AWS sama dengan database Amazon Redshift.
Nilai untuk aws_region harus cocok dengan AWS Region yang tercantum di wilayah Amazon Redshift dan tabel titik akhir di. Referensi Umum AWS
Secara default, UNLOAD mengasumsikan bahwa bucket Amazon S3 target terletak Wilayah AWS sama dengan database Amazon Redshift.
- EKSTENSI 'nama ekstensi'
-
Menentukan ekstensi file untuk ditambahkan ke nama-nama file yang dibongkar. Amazon Redshift tidak menjalankan validasi apa pun, jadi Anda harus memverifikasi bahwa ekstensi file yang ditentukan sudah benar. Jika Anda menentukan metode kompresi tanpa memberikan ekstensi, Amazon Redshift hanya menambahkan ekstensi metode kompresi ke nama file. Jika Anda tidak memberikan ekstensi apa pun dan tidak menentukan metode kompresi, Amazon Redshift tidak menambahkan apa pun ke nama file.
Catatan penggunaan
Menggunakan ESCAPE untuk semua operasi UNLOAD teks yang dibatasi
Saat Anda MEMBONGKAR menggunakan pembatas, data Anda dapat menyertakan pembatas tersebut atau salah satu karakter yang tercantum dalam deskripsi opsi ESCAPE. Dalam hal ini, Anda harus menggunakan opsi ESCAPE dengan pernyataan UNLOAD. Jika Anda tidak menggunakan opsi ESCAPE dengan UNLOAD, operasi COPY berikutnya menggunakan data yang dibongkar mungkin gagal.
penting
Kami sangat menyarankan agar Anda selalu menggunakan ESCAPE dengan pernyataan UNLOAD dan COPY. Pengecualiannya adalah jika Anda yakin bahwa data Anda tidak mengandung pembatas atau karakter lain yang mungkin perlu diloloskan.
Hilangnya presisi floating-point
Anda mungkin mengalami kehilangan presisi untuk data floating-point yang berturut-turut diturunkan dan dimuat ulang.
Batasi klausa
Kueri SELECT tidak dapat menggunakan klausa LIMIT di SELECT luar. Misalnya, pernyataan UNLOAD berikut gagal.
unload ('select * from venue limit 10') to 's3://amzn-s3-demo-bucket/venue_pipe_' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole';
Sebagai gantinya, gunakan klausa LIMIT bersarang, seperti pada contoh berikut.
unload ('select * from venue where venueid in (select venueid from venue order by venueid desc limit 10)') to 's3://amzn-s3-demo-bucket/venue_pipe_' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole';
Anda juga dapat mengisi tabel menggunakan SELECT... INTO atau CREATE TABLE AS menggunakan klausa LIMIT, lalu bongkar dari tabel itu.
Membongkar kolom tipe data GEOMETRY
Anda hanya dapat membongkar kolom GEOMETRI ke teks atau format CSV. Anda tidak dapat membongkar data GEOMETRI dengan opsi. FIXEDWIDTH
Data dibongkar dalam bentuk heksadesimal dari format biner terkenal (EWKB) yang diperluas. Jika ukuran data EWKB lebih dari 4 MB, maka peringatan terjadi karena data nantinya tidak dapat dimuat ke dalam tabel.
Membongkar tipe data HLLSKETCH
Anda hanya dapat membongkar kolom HLLSKETCH ke teks atau format CSV. Anda tidak dapat membongkar data HLLSKETCH dengan opsi. FIXEDWIDTH
Data diturunkan dalam format Base64 untuk sketsa padat atau dalam format JSON untuk HyperLogLog sketsa jarang. HyperLogLog Untuk informasi selengkapnya, lihat HyperLogLog fungsi.
Contoh berikut mengekspor tabel yang berisi kolom HLLSKETCH ke dalam file.
CREATE TABLE a_table(an_int INT, b_int INT); INSERT INTO a_table VALUES (1,1), (2,1), (3,1), (4,1), (1,2), (2,2), (3,2), (4,2), (5,2), (6,2); CREATE TABLE hll_table (sketch HLLSKETCH); INSERT INTO hll_table select hll_create_sketch(an_int) from a_table group by b_int; UNLOAD ('select * from hll_table') TO 's3://amzn-s3-demo-bucket/unload/' IAM_ROLE 'arn:aws:iam::0123456789012:role/MyRedshiftRole' NULL AS 'null' ALLOWOVERWRITE CSV;
Membongkar kolom tipe data VARBYTE
Anda hanya dapat membongkar kolom VARBYTE ke teks atau format CSV. Data dibongkar dalam bentuk heksadesimal. Anda tidak dapat membongkar data VARBYTE dengan opsi. FIXEDWIDTH
ADDQUOTES
Opsi UNLOAD ke CSV tidak didukung. Kolom VARBYTE tidak bisa menjadi kolom PARTITIONED BY.
Klausul FORMAT AS PARQUET
Waspadai pertimbangan ini saat menggunakan FORMAT AS PARQUET:
-
Bongkar ke Parket tidak menggunakan kompresi level file. Setiap grup baris dikompresi dengan SNAPPY.
-
Jika MAXFILESIZE tidak ditentukan, ukuran file maksimum default adalah 6,2 GB. Anda dapat menggunakan MAXFILESIZE untuk menentukan ukuran file 5 MB—6,2 GB. Ukuran file sebenarnya diperkirakan saat file sedang ditulis, jadi mungkin tidak persis sama dengan nomor yang Anda tentukan.
Untuk memaksimalkan kinerja pemindaian, Amazon Redshift mencoba membuat file Parket yang berisi grup baris 32-MB berukuran sama. Nilai MAXFILESIZE yang Anda tentukan secara otomatis dibulatkan ke kelipatan terdekat 32 MB. Misalnya, jika Anda menentukan MAXFILESIZE 200 MB, maka setiap file Parket yang dibongkar kira-kira 192 MB (32 MB grup baris x 6 = 192 MB).
-
Jika kolom menggunakan format data TIMESTAMPTZ, hanya nilai stempel waktu yang diturunkan. Informasi zona waktu tidak dibongkar.
-
Jangan tentukan awalan nama file yang dimulai dengan karakter underscore (_) atau period (.). Redshift Spectrum memperlakukan file yang dimulai dengan karakter ini sebagai file tersembunyi dan mengabaikannya.
PARTISI DENGAN klausa
Waspadai pertimbangan ini saat menggunakan PARTITION BY:
-
Kolom partisi tidak termasuk dalam file output.
-
Pastikan untuk menyertakan kolom partisi dalam kueri SELECT yang digunakan dalam pernyataan UNLOAD. Anda dapat menentukan sejumlah kolom partisi dalam perintah UNLOAD. Namun, ada batasan bahwa harus ada setidaknya satu kolom nonpartisi untuk menjadi bagian dari file.
-
Jika nilai kunci partisi adalah null, Amazon Redshift secara otomatis membongkar data tersebut ke partisi default yang disebut.
partition_column=__HIVE_DEFAULT_PARTITION__
-
Perintah UNLOAD tidak membuat panggilan apa pun ke katalog eksternal. Untuk mendaftarkan partisi baru Anda untuk menjadi bagian dari tabel eksternal yang ada, gunakan ALTER TABLE terpisah... TAMBAHKAN PARTISI... perintah. Atau Anda dapat menjalankan perintah CREATE EXTERNAL TABLE untuk mendaftarkan data yang dibongkar sebagai tabel eksternal baru. Anda juga dapat menggunakan AWS Glue crawler untuk mengisi Katalog Data Anda. Untuk informasi selengkapnya, lihat Mendefinisikan Crawler di Panduan AWS Glue Pengembang.
-
Jika Anda menggunakan opsi MANIFEST, Amazon Redshift hanya menghasilkan satu file manifes di folder Amazon S3 root.
-
Tipe data kolom yang dapat Anda gunakan sebagai kunci partisi adalah SMALLINT, INTEGER, BIGINT, DECIMAL, REAL, BOOLEAN, CHAR, VARCHAR, DATE, dan TIMESTAMP.
Menggunakan hak istimewa ASSUMEROLE untuk memberikan akses ke peran IAM untuk operasi UNLOAD
Untuk menyediakan akses bagi pengguna dan grup tertentu ke peran IAM untuk operasi UNLOAD, pengguna super dapat memberikan hak istimewa ASSUMEROLE pada peran IAM kepada pengguna dan grup. Untuk informasi, lihat HIBAH.
UNLOAD tidak mendukung alias jalur akses Amazon S3
Anda tidak dapat menggunakan alias jalur akses Amazon S3 dengan perintah UNLOAD.
Contoh
Untuk contoh yang menunjukkan cara menggunakan perintah UNLOAD, lihatContoh BONGKAR.