UNLOAD - Amazon Redshift

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

UNLOAD

Membongkar hasil kueri ke satu atau beberapa teks, atau file Apache Parquet di Amazon S3JSON, menggunakan enkripsi sisi server Amazon S3 (-S3). SSE 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 kolumnar 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 lainnya AWS layanan seperti Amazon Athena, AmazonEMR, dan Amazon. SageMaker

Untuk informasi selengkapnya dan contoh skenario tentang penggunaan UNLOAD perintah, lihatMembongkar data di Amazon Redshift.

Hak istimewa dan izin yang diperlukan

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

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')

Sebuah SELECT kueri. 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 MANIFEST manifes jika ditentukan. Nama objek diawali dengan nama-awalan. Jika Anda menggunakanPARTITION BY, garis miring maju (/) secara otomatis ditambahkan ke akhir nilai nama-awalan jika diperlukan. Untuk keamanan tambahan, UNLOAD sambungkan ke Amazon S3 menggunakan koneksiHTTPS. Secara default, UNLOAD menulis satu atau lebih file per irisan. UNLOADmenambahkan 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 ditentukanOFF, file data ditulis sebagai berikut:

<object_path>/<name_prefix><part-number>.

UNLOADsecara otomatis membuat file terenkripsi menggunakan enkripsi sisi server Amazon S3 SSE (), termasuk file manifes jika digunakan. MANIFEST COPYPerintah 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. ENCRYPTED

penting

REGIONdiperlukan saat bucket Amazon S3 tidak sama Wilayah AWS sebagai database Amazon Redshift.

otorisasi

UNLOADPerintah memerlukan otorisasi untuk menulis data ke Amazon S3. UNLOADPerintah menggunakan parameter yang sama dengan COPY perintah yang digunakan untuk otorisasi. Untuk informasi selengkapnya, lihat Parameter otorisasi di referensi sintaks COPY perintah.

IAM_ ROLE {default | 'arn:aws:iam::<Akun AWS-id-1>:peran/<role-name>'

Gunakan kata kunci default agar Amazon Redshift menggunakan IAM peran yang ditetapkan sebagai default dan terkait dengan cluster saat UNLOAD perintah berjalan.

Gunakan Amazon Resource Name (ARN) untuk IAM peran 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, atauCREDENTIALS. IAM_ ROLE dapat dirantai. Untuk informasi selengkapnya, lihat IAMPeran rantai di Panduan Manajemen Pergeseran Merah Amazon.

[FORMAT[SEBAGAI]] CSV | PARQUET | JSON

Kata kunci untuk menentukan format bongkar untuk mengganti format default.

KapanCSV, bongkar ke file teks dalam CSV format 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 terlampir dalam 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.

KapanPARQUET, bongkar ke file dalam format Apache Parquet versi 1.0. Secara default, setiap grup baris dikompresi menggunakan SNAPPY kompresi. Untuk informasi lebih lanjut tentang format Parket Apache, lihat Parket.

KapanJSON, bongkar ke JSON file dengan setiap baris berisi JSON objek, mewakili catatan lengkap dalam hasil kueri. Amazon Redshift mendukung penulisan bersarang JSON saat hasil kueri berisi kolom. SUPER Untuk membuat JSON objek yang valid, nama setiap kolom dalam kueri harus unik. Dalam JSON file, nilai boolean diturunkan sebagai t atauf, dan NULL nilai diturunkan sebagai. null Saat nol baris dibongkar, Amazon Redshift tidak menulis objek Amazon S3.

Kata kunci FORMAT dan AS adalah opsional. Anda tidak dapat menggunakan CSV dengan FIXEDWIDTH atauADDQUOTES. Anda tidak dapat menggunakan PARQUET denganDELIMITER,FIXEDWIDTH,ADDQUOTES,ESCAPE, NULL AS,,HEADER,GZIP,BZIP2, atauZSTD. PARQUETwith ENCRYPTED hanya didukung dengan enkripsi sisi server dengan AWS Key Management Service kunci (SSE-KMS). Anda tidak dapat menggunakan JSON denganDELIMITER,HEADER,FIXEDWIDTH,ADDQUOTES,ESCAPE, atau NULL AS.

PARTITIONOLEH (column_name [,...]) [] INCLUDE

Menentukan kunci partisi untuk operasi bongkar. UNLOADsecara otomatis mempartisi file output ke 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 INCLUDE opsi, kolom partisi tidak dihapus dari file yang dibongkar.

Amazon Redshift tidak mendukung literal string di PARTITION klausa BY.

MANIFEST [ VERBOSE ]

Membuat file manifes yang secara eksplisit mencantumkan detail untuk file data yang dibuat oleh prosesUNLOAD. Manifes adalah file teks dalam JSON format yang URL mencantumkan setiap file yang ditulis ke Amazon S3.

Jika MANIFEST ditentukan dengan VERBOSE opsi, manifes mencakup rincian berikut:

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

  • Jumlah baris diturunkan ke setiap file. Jika HEADER opsi ditentukan, jumlah baris termasuk baris header.

  • Ukuran file total dari semua file yang dibongkar dan jumlah baris total diturunkan ke semua file. Jika HEADER opsi ditentukan, jumlah baris termasuk baris header.

  • Penulis. Penulis selalu “Amazon Redshift”.

Anda VERBOSE hanya dapat menentukan berikutMANIFEST.

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 s3://amzn-s3-demo-bucket/venue_ '', lokasi file manifes adalah ''. s3://amzn-s3-demo-bucket/venue_manifest

HEADER

Menambahkan baris header yang berisi nama kolom di bagian atas setiap file output. Opsi transformasi teks, sepertiCSV,DELIMITER,ADDQUOTES, danESCAPE, juga berlaku untuk baris header. Anda tidak dapat menggunakan HEADER denganFIXEDWIDTH.

DELIMITERSEBAGAI 'delimiter_character'

Menentukan ASCII karakter 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 CSV file adalah karakter koma. Kata kunci AS adalah opsional. Anda tidak dapat menggunakan DELIMITER denganFIXEDWIDTH. Jika data berisi karakter pembatas, Anda perlu menentukan ESCAPE opsi untuk melarikan diri 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 UNLOAD pernyataan 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 atauHEADER.

ENCRYPTED [AUTO]

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 ENCRYPTED parameter, UNLOAD secara otomatis membuat file terenkripsi menggunakan enkripsi sisi server Amazon S3 dengan AWS-kunci enkripsi terkelola (SSE-S3).

UntukENCRYPTED, 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 CREDENTIALS parameter dengan parameter KMS _ KEY _ID. Jika Anda menjalankan UNLOAD perintah untuk data menggunakan KMS _ KEY _ID, Anda kemudian dapat melakukan COPY operasi 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 COPY operasi untuk data terenkripsi.

UNLOADtidak mendukung enkripsi sisi server Amazon S3 dengan kunci yang disediakan pelanggan (-C). SSE

Jika ENCRYPTED AUTO digunakan, UNLOAD perintah mengambil default AWS KMS kunci enkripsi pada properti bucket Amazon S3 target dan mengenkripsi file yang ditulis ke Amazon S3 dengan AWS KMS kunci. Jika bucket tidak memiliki default AWS KMS kunci enkripsi, UNLOAD secara otomatis membuat file terenkripsi menggunakan enkripsi sisi server Amazon Redshift dengan AWS-kunci enkripsi terkelola (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 'kunci-id'

Menentukan ID kunci untuk AWS Key Management Service (AWS KMS) kunci 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 ENCRYPTED parameter juga. 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 ENCRYPTED parameter juga. Anda tidak dapat menggunakan MASTER SYMMETRIC _ _ KEY dengan CREDENTIALS parameter. 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 mendukungADDQUOTES.

Jika Anda menggunakanADDQUOTES, Anda harus menentukan REMOVEQUOTES di COPY jika Anda memuat ulang data.

NULLSEBAGAI '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 SUPER data menggunakan JSON format dan merepresentasikannya sebagai null sebagaimana ditentukan oleh format. JSON Akibatnya, kolom SUPER data mengabaikan opsi NULL [AS] yang digunakan dalam UNLOAD perintah.

ESCAPE

Untuk CHAR dan VARCHAR kolom 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 ADDQUOTES keduanya ESCAPE dan ditentukan dalam UNLOAD perintah).

penting

Jika Anda memuat data Anda menggunakan ESCAPE opsi COPY dengan, Anda juga harus menentukan ESCAPE opsi dengan UNLOAD perintah Anda untuk menghasilkan file output timbal balik. Demikian pula, jika Anda UNLOAD menggunakan ESCAPE opsi, Anda perlu menggunakan ESCAPE ketika Anda data COPY yang sama.

ALLOWOVERWRITE

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

CLEANPATH

CLEANPATHOpsi ini 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 UNLOAD operasi.

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 CLEANPATH opsi dihapus secara permanen dan tidak dapat dipulihkan. Jika bucket Amazon S3 target mengaktifkan versi, UNLOAD dengan CLEANPATH opsi tidak menghapus versi file sebelumnya.

Anda tidak dapat menentukan CLEANPATH opsi jika Anda menentukan ALLOWOVERWRITE opsi.

PARALLEL

Secara default, UNLOAD menulis data secara paralel dengan beberapa file, sesuai dengan jumlah irisan di cluster. Opsi default adalah ON atauTRUE. Jika PARALLEL ada OFF atauFALSE, UNLOAD menulis ke satu atau lebih file data secara serial, diurutkan secara mutlak sesuai ORDER dengan klausa BY, jika digunakan. Ukuran maksimum untuk file data adalah 6,2 GB. Jadi, misalnya, jika Anda membongkar 13, 4 GB data, UNLOAD buat 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

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

MAXFILESIZE[AS] ukuran maksimal [MB | GB]

Menentukan ukuran maksimum file yang UNLOAD dibuat 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 file manifesMAXFILESIZE.

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.

REGION[AS] 'aws-region'

Menentukan Wilayah AWS di mana ember Amazon S3 target berada. REGIONdiperlukan UNLOAD untuk bucket Amazon S3 yang tidak sama Wilayah AWS sebagai database Amazon Redshift.

Nilai untuk aws_region harus cocok dengan AWS Wilayah yang tercantum di wilayah Amazon Redshift dan tabel titik akhir di Referensi Umum AWS.

Secara default, UNLOAD asumsikan bahwa bucket Amazon S3 target terletak di tempat yang sama Wilayah AWS sebagai database Amazon Redshift.

EXTENSION'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 menggunakan metode kompresi sepertiGZIP, Anda masih harus menentukan .gz dalam parameter ekstensi. Jika Anda tidak memberikan ekstensi apa pun, Amazon Redshift tidak menambahkan apa pun ke nama file. Jika Anda menentukan metode kompresi tanpa memberikan ekstensi, Amazon Redshift hanya menambahkan ekstensi metode kompresi ke nama file.

Catatan penggunaan

Menggunakan ESCAPE untuk semua operasi teks yang dibatasi UNLOAD

Saat Anda UNLOAD menggunakan pembatas, data Anda dapat menyertakan pembatas itu atau salah satu karakter yang tercantum dalam deskripsi opsi. ESCAPE Dalam hal ini, Anda harus menggunakan ESCAPE opsi dengan UNLOAD pernyataan tersebut. Jika Anda tidak menggunakan ESCAPE opsi denganUNLOAD, COPY operasi selanjutnya menggunakan data yang dibongkar mungkin gagal.

penting

Kami sangat menyarankan agar Anda selalu menggunakan ESCAPE dengan keduanya UNLOAD dan COPY pernyataan. 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

SELECTKueri tidak dapat menggunakan LIMIT klausa di bagian luarSELECT. Misalnya, UNLOAD pernyataan 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 LIMIT klausa 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 menggunakanSELECT... INTO atau CREATE TABLE AS menggunakan LIMIT klausa, lalu membongkar dari tabel itu.

Membongkar kolom tipe GEOMETRY data

Anda hanya dapat membongkar GEOMETRY kolom ke teks atau CSV format. Anda tidak dapat membongkar GEOMETRY data dengan FIXEDWIDTH opsi. Data dibongkar dalam bentuk heksadesimal dari format biner () terkenal yang diperluas. EWKB Jika ukuran EWKB data lebih dari 4 MB, maka peringatan terjadi karena data nantinya tidak dapat dimuat ke dalam tabel.

Membongkar tipe HLLSKETCH data

Anda hanya dapat membongkar HLLSKETCH kolom ke teks atau CSV format. Anda tidak dapat membongkar HLLSKETCH data dengan FIXEDWIDTH opsi. Data diturunkan dalam format Base64 untuk sketsa padat atau dalam format untuk HyperLogLog sketsa JSON jarang. HyperLogLog Untuk informasi selengkapnya, lihat HyperLogLog fungsi.

Contoh berikut mengekspor tabel yang berisi HLLSKETCH kolom 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 VARBYTE data

Anda hanya dapat membongkar VARBYTE kolom ke teks atau CSV format. Data diturunkan dalam bentuk heksadesimal. Anda tidak dapat membongkar VARBYTE data dengan FIXEDWIDTH opsi. ADDQUOTESOpsi UNLOAD untuk a CSV tidak didukung. VARBYTEKolom tidak bisa menjadi kolom PARTITIONED BY.

FORMATPARQUETKlausa AS

Waspadai pertimbangan ini saat menggunakan FORMAT ASPARQUET:

  • Bongkar ke Parket tidak menggunakan kompresi level file. Setiap grup baris dikompresi denganSNAPPY.

  • 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. MAXFILESIZENilai 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 TIMESTAMPTZ data, 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.

PARTITIONBY klausa

Waspadai pertimbangan ini saat menggunakan PARTITION BY:

  • Kolom partisi tidak termasuk dalam file output.

  • Pastikan untuk menyertakan kolom partisi dalam SELECT kueri yang digunakan dalam UNLOAD pernyataan. Anda dapat menentukan sejumlah kolom partisi dalam UNLOAD perintah. 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__

  • UNLOADPerintah tidak membuat panggilan apa pun ke katalog eksternal. Untuk mendaftarkan partisi baru Anda untuk menjadi bagian dari tabel eksternal yang ada, gunakan... ALTER TABLE ADDPARTITION... perintah. Atau Anda dapat menjalankan CREATE EXTERNAL TABLE perintah 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 AWS Glue Panduan Pengembang.

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

  • Tipe data kolom yang dapat Anda gunakan sebagai kunci partisi adalah SMALLINTINTEGER,BIGINT,DECIMAL,REAL,BOOLEAN,CHAR,VARCHAR,DATE, danTIMESTAMP.

Menggunakan hak ASSUMEROLE istimewa untuk memberikan akses ke IAM peran untuk operasi UNLOAD

Untuk menyediakan akses bagi pengguna dan grup tertentu ke IAM peran untuk UNLOAD operasi, pengguna super dapat memberikan ASSUMEROLE hak istimewa pada IAM peran kepada pengguna dan grup. Untuk informasi, lihat GRANT.

UNLOADtidak 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 UNLOAD perintah, lihatUNLOADcontoh.