View a markdown version of this page

MEMBONGKAR - Amazon Redshift

Amazon Redshift tidak akan lagi mendukung penggunaan Python UDF setelah 30 Juni 2026. Kami akan mulai menegakkannya secara bertahap. Untuk informasi lebih lanjut tentang detail opsi akhir masa pakai dan migrasi Python, lihat posting blog yang diterbitkan pada 30 Juni 2025.

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

MEMBONGKAR

Client-side enkripsi untuk perintah COPY dan UNLOAD tidak akan lagi terbuka untuk pelanggan baru mulai 30 April 2025. Jika Anda menggunakan enkripsi sisi klien dengan perintah COPY dan UNLOAD dalam 12 bulan sebelum 30 April 2025, Anda dapat terus menggunakan enkripsi sisi klien dengan perintah COPY atau UNLOAD hingga 30 April 2026. Setelah 30 April 2026, Anda tidak akan dapat menggunakan enkripsi sisi klien untuk COPY dan UNLOAD. Kami menyarankan Anda beralih menggunakan enkripsi sisi server untuk COPY dan UNLOAD sesegera mungkin. Jika Anda sudah menggunakan enkripsi sisi server untuk COPY dan UNLOAD, tidak ada perubahan dan Anda dapat terus menggunakannya tanpa mengubah kueri Anda. Untuk informasi selengkapnya tentang enkripsi untuk COPY dan UNLOAD, lihat parameter ENCRYPTED di bawah ini.

Membongkar 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.

Secara default, format file yang tidak dimuat adalah teks dipisahkan pipa (). |

Anda dapat mengelola ukuran file di Amazon S3, dan dengan ekstensi jumlah file, dengan mengatur parameter MAXFILESIZE. Pastikan bahwa rentang IP S3 ditambahkan ke daftar izin Anda. Untuk mempelajari selengkapnya tentang rentang IP S3 yang diperlukan, lihat Isolasi jaringan.

Anda dapat membongkar hasil kueri Amazon Redshift ke danau data 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 menyimpan transformasi dan pengayaan data 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 menggunakan perintah UNLOAD, lihatMembongkar data di Amazon Redshift.

Hak istimewa dan izin yang diperlukan

Agar perintah UNLOAD berhasil, setidaknya diperlukan hak istimewa SELECT pada data dalam database, bersama dengan izin untuk menulis ke lokasi Amazon S3. Untuk informasi tentang izin untuk mengakses AWS sumber daya untuk perintah UNLOAD, lihatIzin untuk mengakses lainnya AWS Sumber daya.

Untuk menerapkan izin hak istimewa terkecil, ikuti rekomendasi ini untuk hanya memberikan izin, sesuai kebutuhan, kepada pengguna yang menjalankan perintah.

  • Pengguna harus memiliki hak istimewa SELECT pada data. Untuk informasi tentang cara membatasi hak akses database, lihatHIBAH.

  • Pengguna memerlukan izin untuk mengambil peran IAM untuk menulis ke bucket Amazon S3 di Anda Akun AWS. Untuk membatasi akses bagi pengguna database untuk mengambil peran, lihat Membatasi akses ke peran IAM di Panduan Manajemen Amazon Redshift.

  • Pengguna memerlukan 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

('sel eksi 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''')
UNTUK 's3://objek- path/name - 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 nam a-awalan. Jika Anda menggunakanPARTITION BY, garis miring maju (/) secara otomatis ditambahkan ke akhir nilai awalan nama 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>manifest.

Jika 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 Anda menggunakan konsol Amazon S3 atau API. Untuk informasi selengkapnya, lihat Melindungi Data Menggunakan Server-Side Enkripsi.

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 untuk otorisasi. Untuk informasi selengkapnya, lihat Parameter otorisasi referensi sintaks perintah COPY.

IAM_ROLE {default | 'arn:aws:iam: :rol/ '<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 dijalankan.

Gunakan Nama Sumber Daya Amazon (ARN) untuk peran IAM yang digunakan cluster Anda untuk otentikasi 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 Mengrantai peran IAM di Panduan Manajemen Amazon Redshift.

[FORMAT [SEBAGAI]] CSV | PARKET | JSON

Kata kunci untuk menentukan format bongkar muat untuk mengganti format default.

Saat CSV, bongkar muat ke file teks dalam format CSV menggunakan karakter koma (,) sebagai pembatas default. Jika bidang berisi pembatas, tanda kutip ganda, karakter baris baru, atau pengembalian kereta, maka bidang dalam file yang tidak dimuat ditutup dalam tanda kutip ganda. Tanda kutip ganda dalam bidang data dilepaskan 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 selengkapnya tentang format Parket Apache, lihat Parket.

Saat JSON, membongkar 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 dibongkar sebagai t atauf, dan nilai NULL dibongkar sebagai. null Saat nol baris diturunkan, Amazon Redshift tidak menulis objek Amazon S3.

Kata kunci FORMAT dan AS adalah 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, BZIP2, atau ZSTD. PARQUET dengan ENCRYPTED hanya didukung dengan enkripsi sisi server dengan AWS Key Management Service kunci ()SSE-KMS. 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 muat. UNLOAD secara otomatis mempartisi file output ke folder partisi berdasarkan nilai kunci partisi, mengikuti konvensi Apache Hive. Misalnya, file Parquet 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 sedang dibongkar.

Jika Anda menentukan PARTITION BY dengan opsi INCLUDE, kolom partisi tidak dihapus dari file yang dibongkar.

Amazon Redshift tidak mendukung literal string dalam klausa PARTITION BY.

MANIFES [VERBOSE]

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 menyertakan detail berikut:

  • Nama kolom dan tipe data, dan untuk tipe data CHAR, VARCHAR, atau NUMERIK, dimensi untuk setiap kolom. Untuk tipe data CHAR dan VARCHAR, dimensi adalah panjang. Untuk tipe data DECIMAL atau NUMERIC, dimensinya adalah presisi dan skala.

  • Jumlah baris dibongkar ke setiap file. Jika opsi HEADER ditentukan, jumlah baris menyertakan baris header.

  • Ukuran file total dari semua file yang dibongkar dan jumlah baris total yang dibongkar ke semua file. Jika opsi HEADER ditentukan, jumlah baris menyertakan 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 pembongkaran dalam format<object_path_prefix>manifest. Misalnya, jika UNLOAD menentukan awalan jalur Amazon S3 's3://amzn-s3-demo-bucket/venue_', lokasi file manifes adalah 's3://amzn-s3-demo-bucket/venue_manifest'.

TAJUK

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 menghindari pembatas, atau menggunakan 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 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 keluaran di Amazon S3 dienkripsi menggunakan enkripsi sisi server Amazon S3. Jika MANIFEST ditentukan, file manifes juga dienkripsi. Untuk informasi selengkapnya, lihat Membongkar file data terenkripsi. Jika Anda tidak menentukan parameter ENCRYPTED, UNLOAD akan secara otomatis membuat file terenkripsi menggunakan enkripsi sisi server Amazon S3 dengan kunci enkripsi yang AWS dikelola (). SSE-S3

Untuk ENCRYPTED, Anda mungkin ingin membongkar ke Amazon S3 menggunakan enkripsi sisi server dengan AWS KMS kunci (). SSE-KMS Jika demikian, gunakan KMS_KEY_ID parameter untuk memberikan ID kunci. Anda tidak dapat menggunakan Menggunakan parameter 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.

Jika ENCRYPTED AUTO digunakan, perintah UNLOAD 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 yang AWS dikelola (). SSE-S3 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 mengotentikasi menggunakan parameter CREDENTIALS. Sebagai gantinya, gunakan salah Menggunakan parameter IAM_ROLE satu atauMenggunakan parameter ACCESS_KEY_ID dan SECRET_ACCESS_KEY.

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 beberapa file terkompresi gzip per irisan. Setiap file yang dihasilkan ditambahkan dengan .gz ekstensi.

ZSTD

Membongkar data ke satu atau lebih Zstandard-compressed file per irisan. Setiap file yang dihasilkan ditambahkan dengan .zst ekstensi.

TAMBAHKAN KUTIPAN

Menempatkan tanda kutip di sekitar setiap bidang data yang tidak dimuat, 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 mewakili 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 dibongkar sebagai:

  • Zero-length string untuk output yang dibatasi

  • String spasi untuk keluaran lebar tetap

Jika string null ditentukan untuk pembongkaran lebar tetap dan lebar kolom keluaran kurang dari lebar string null, 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 seperti yang 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:

  • Umpan garis: \n

  • Pengembalian kereta: \r

  • Karakter pembatas yang ditentukan untuk data yang dibongkar.

  • Karakter pelarian: \

  • 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 keluaran timbal balik. Demikian pula, jika Anda UNLOAD menggunakan opsi ESCAPE, Anda perlu menggunakan ESCAPE ketika Anda MENYALIN data yang sama.

IZINKAN PENULISAN

Secara default, UNLOAD gagal jika menemukan file yang mungkin akan diganti. Jika ALLOWOVERWRITE ditentukan, UNLOAD akan mengganti file yang ada, termasuk file manifes.

JALUR 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 bucket Amazon S3. Untuk informasi, 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 pembuatan versi, UNLOAD 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 ke 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 data 13,4 GB, 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 maksimal [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 default 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 grup baris, mengurangi jumlah komunikasi jaringan. Tentukan nilai integer antara 32 MB dan 128 MB. Kata kunci AS adalah opsional. Unit default adalah MB.

Jika ROWGROUPSIZE tidak ditentukan, ukuran defaultnya adalah 32 MB. Untuk menggunakan parameter ini, format penyimpanan harus Parquet dan tipe simpul harus ra3.4xlarge, ra3.16xlarge, rg.4xlarge, rg.12xlarge, atau dc2.8xlarge.

WILAYAH [AS] 'aws- wilayah'

Men Wilayah AWS entukan lokasi bucket Amazon S3 target. REGION diperlukan untuk UNLOAD ke bucket Amazon S3 yang tidak Wilayah AWS sama dengan database Amazon Redshift.

Nilai untuk aws_region harus cocok dengan Wilayah yang tercantum dalam tabel AWS wilayah Amazon Redshift dan 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 file yang tidak dimuat. 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 itu 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 tidak dimuat 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 dihindari.

Hilangnya presisi floating-point

Anda mungkin mengalami kehilangan presisi untuk data floating-point yang secara berturut-turut dibongkar dan dimuat ulang.

Klausul batas

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 membongkar dari tabel tersebut.

Membongkar kolom tipe data GEOMETRY

Anda hanya dapat membongkar kolom GEOMETRY ke teks atau format CSV. Anda tidak dapat membongkar data GEOMETRY dengan FIXEDWIDTH opsi tersebut. Data dibongkar dalam bentuk heksadesimal dari format biner terkenal yang diperluas (EWKB). 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 dibongkar dalam format Base64 untuk HyperLogLog sketsa padat atau dalam format JSON untuk 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 ADDQUOTESOpsi UNLOAD ke CSV tidak didukung. Kolom VARBYTE tidak dapat berupa kolom PARTITIONED BY.

FORMAT AS klausa PARQUET

Perhatikan pertimbangan berikut saat menggunakan FORMAT AS PARQUET:

  • Membongkar ke Parquet tidak menggunakan kompresi tingkat 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 angka yang Anda tentukan.

    Untuk memaksimalkan kinerja pemindaian, Amazon Redshift mencoba membuat file Parquet yang berisi grup baris 32-MB berukuran sama. Nilai MAXFILESIZE yang Anda tentukan secara otomatis dibulatkan ke bawah ke kelipatan terdekat dari 32 MB. Misalnya, jika Anda menentukan MAXFILESIZE 200 MB, maka setiap file Parquet yang dibongkar kira-kira 192 MB (grup baris 32 MB x 6 = 192 MB).

  • Jika kolom menggunakan format data TIMESTAMPTZ, hanya nilai stempel waktu yang dibongkar. Informasi zona waktu tidak dibongkar.

  • Jangan tentukan awalan nama file yang dimulai dengan karakter garis bawah (_) atau titik (.). Redshift Spectrum memperlakukan file yang dimulai dengan karakter ini sebagai file tersembunyi dan mengabaikannya.

PARTISI BY 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 setidaknya harus ada 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 melakukan panggilan apa pun ke katalog eksternal. Untuk mendaftarkan partisi baru Anda untuk menjadi bagian dari tabel eksternal Anda yang ada, gunakan ALTER TABLE terpisah... TAMBAH 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 Peng AWS Glue embang.

  • Jika Anda menggunakan opsi MANIFEST, Amazon Redshift hanya menghasilkan satu file manifes di folder root Amazon S3.

  • Jenis 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, superuser dapat memberikan hak istimewa ASSUMEROLE pada peran IAM kepada pengguna dan grup. Untuk informasi, lihat HIBAH.

UNLOAD tidak mendukung alias titik akses Amazon S3

Anda tidak dapat menggunakan alias titik akses Amazon S3 dengan perintah UNLOAD.

Contoh

Untuk contoh yang menunjukkan cara menggunakan perintah UNLOAD, lihatContoh UNLOAD.