

 Amazon Redshift tidak akan lagi mendukung pembuatan Python UDFs baru mulai Patch 198. Python yang ada UDFs akan terus berfungsi hingga 30 Juni 2026. Untuk informasi lebih lanjut, lihat [posting blog](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

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

# Membongkar data di Amazon Redshift
<a name="c_unloading_data"></a>

Untuk membongkar data dari tabel database ke sekumpulan file di bucket Amazon S3, Anda dapat menggunakan perintah dengan [MEMBONGKAR](r_UNLOAD.md) pernyataan SELECT. Anda dapat membongkar data teks dalam format terbatas atau format lebar tetap, terlepas dari format data yang digunakan untuk memuatnya. Anda juga dapat menentukan apakah akan membuat file GZIP terkompresi.

Anda dapat membatasi akses yang dimiliki pengguna ke bucket Amazon S3 Anda dengan menggunakan kredensil keamanan sementara.

**Topics**
+ [Membongkar data ke Amazon S3](t_Unloading_tables.md)
+ [Membongkar file data terenkripsi](t_unloading_encrypted_files.md)
+ [Membongkar data dalam format lebar terbatas atau tetap](t_unloading_fixed_width_data.md)
+ [Memuat ulang data yang dibongkar](t_Reloading_unload_files.md)

# Membongkar data ke Amazon S3
<a name="t_Unloading_tables"></a>

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](r_UNLOAD.md) 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 (\$1 '). Untuk informasi selengkapnya, lihat referensi [SELECT](r_SELECT_synopsis.md) perintah. Untuk informasi selengkapnya tentang menggunakan klausa LIMIT, lihat [Catatan penggunaan](r_UNLOAD.md#unload-usage-notes) perintah UNLOAD.

Misalnya, perintah UNLOAD berikut mengirimkan konten tabel VENUE ke bucket Amazon `s3://amzn-s3-demo-bucket/tickit/unload/` S3.

```
unload ('select * from venue')   
to 's3://amzn-s3-demo-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://amzn-s3-demo-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://amzn-s3-demo-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://amzn-s3-demo-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://amzn-s3-demo-bucket/tickit/venue_' 
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
manifest;
```

Contoh berikut menunjukkan manifes untuk empat file bongkar.

```
{
  "entries": [
    {"url":"s3://amzn-s3-demo-bucket/tickit/venue_0000_part_00"},
    {"url":"s3://amzn-s3-demo-bucket/tickit/venue_0001_part_00"},
    {"url":"s3://amzn-s3-demo-bucket/tickit/venue_0002_part_00"},
    {"url":"s3://amzn-s3-demo-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](loading-data-files-using-manifest.md).

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`'. Contoh:

```
amzn-s3-demo-bucket/tickit/venue_0000_part_00 
amzn-s3-demo-bucket/tickit/venue_0001_part_00 
amzn-s3-demo-bucket/tickit/venue_0002_part_00 
amzn-s3-demo-bucket/tickit/venue_0003_part_00
amzn-s3-demo-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\$1UNLOAD\$1LOG.

Query berikut mengembalikan pathname untuk file yang dibuat oleh UNLOAD. [PG\$1LAST\$1QUERY\$1ID](PG_LAST_QUERY_ID.md)Fungsi 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://amzn-s3-demo-bucket/venue0000_part_00
  2320 | s3://amzn-s3-demo-bucket/venue0001_part_00
  2320 | s3://amzn-s3-demo-bucket/venue0002_part_00
  2320 | s3://amzn-s3-demo-bucket/venue0003_part_00
(4 rows)
```

Jika jumlah datanya sangat besar, Amazon Redshift mungkin membagi file menjadi beberapa bagian per irisan. 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://amzn-s3-demo-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://amzn-s3-demo-bucket/venue_pipe_' 
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
manifest 
allowoverwrite;
```

# Membongkar file data terenkripsi
<a name="t_unloading_encrypted_files"></a>

UNLOAD secara otomatis membuat file menggunakan enkripsi sisi server Amazon S3 AWS dengan kunci enkripsi terkelola (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. UNLOAD tidak mendukung enkripsi sisi server Amazon S3 menggunakan kunci yang disediakan pelanggan. Untuk informasi selengkapnya, silakan lihat [ Melindungi data menggunakan enkripsi sisi server](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html). 

Untuk membongkar ke Amazon S3 menggunakan enkripsi sisi server dengan kunci, gunakan parameter KMS\$1KEY\$1ID untuk AWS KMS memberikan ID kunci seperti yang ditunjukkan pada contoh berikut.

```
unload ('select venuename, venuecity from venue')
to 's3://amzn-s3-demo-bucket/encrypted/venue_' 
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
KMS_KEY_ID '1234abcd-12ab-34cd-56ef-1234567890ab'
encrypted;
```

Jika Anda ingin memberikan kunci enkripsi Anda sendiri, Anda dapat membuat file data terenkripsi sisi klien di Amazon S3 dengan menggunakan perintah UNLOAD dengan opsi ENCRYPTED. UNLOAD menggunakan proses enkripsi amplop yang sama dengan yang digunakan enkripsi sisi klien Amazon S3. Anda kemudian dapat menggunakan perintah COPY dengan opsi ENCRYPTED untuk memuat file terenkripsi.

Prosesnya bekerja seperti ini:

1. *Anda membuat kunci AES 256-bit yang dikodekan base64 yang akan Anda gunakan sebagai kunci enkripsi pribadi Anda, atau kunci simetris root.* 

1. Anda mengeluarkan perintah UNLOAD yang menyertakan kunci simetris root Anda dan opsi ENCRYPTED. 

1. UNLOAD menghasilkan kunci one-time-use simetris (disebut kunci *simetris amplop*) dan vektor inisialisasi (IV), yang digunakan untuk mengenkripsi data Anda. 

1. UNLOAD mengenkripsi kunci simetris amplop menggunakan kunci simetris root Anda. 

1. UNLOAD kemudian menyimpan file data terenkripsi di Amazon S3 dan menyimpan kunci amplop terenkripsi dan IV sebagai metadata objek dengan setiap file. Kunci amplop terenkripsi disimpan sebagai metadata objek `x-amz-meta-x-amz-key` dan IV disimpan sebagai metadata objek. `x-amz-meta-x-amz-iv` 

Untuk informasi selengkapnya tentang proses enkripsi amplop, lihat artikel [Enkripsi data sisi klien dengan SDK for AWS Java dan Amazon](https://aws.amazon.com/articles/2850096021478074) S3. 

Untuk membongkar file data terenkripsi, tambahkan nilai kunci root ke string kredensial dan sertakan opsi ENCRYPTED. Jika Anda menggunakan opsi MANIFEST, file manifes juga dienkripsi.

```
unload ('select venuename, venuecity from venue')
to 's3://amzn-s3-demo-bucket/encrypted/venue_' 
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
master_symmetric_key '<root_key>' 
manifest
encrypted;
```

Untuk membongkar file data terenkripsi yang dikompresi GZIP, sertakan opsi GZIP bersama dengan nilai kunci root dan opsi ENCRYPTED.

```
unload ('select venuename, venuecity from venue')
to 's3://amzn-s3-demo-bucket/encrypted/venue_' 
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
master_symmetric_key '<root_key>' 
encrypted gzip;
```

Untuk memuat file data terenkripsi, tambahkan parameter MASTER\$1SYMMETRIC\$1KEY dengan nilai kunci root yang sama dan sertakan opsi ENCRYPTED. 

```
copy venue from 's3://amzn-s3-demo-bucket/encrypted/venue_' 
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
master_symmetric_key '<root_key>' 
encrypted;
```

# Membongkar data dalam format lebar terbatas atau tetap
<a name="t_unloading_fixed_width_data"></a>

Anda dapat membongkar data dalam format terbatas atau format lebar tetap. Output default adalah pipe-delimited (menggunakan karakter '\$1').

Contoh berikut menentukan koma sebagai pembatas: 

```
unload ('select * from venue')
to 's3://amzn-s3-demo-bucket/tickit/venue/comma' 
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
delimiter ',';
```

File output yang dihasilkan terlihat seperti ini: 

```
20,Air Canada Centre,Toronto,ON,0
60,Rexall Place,Edmonton,AB,0
100,U.S. Cellular Field,Chicago,IL,40615
200,Al Hirschfeld Theatre,New York City,NY,0
240,San Jose Repertory Theatre,San Jose,CA,0
300,Kennedy Center Opera House,Washington,DC,0
...
```

Untuk membongkar hasil yang sama yang disetel ke file yang dibatasi tab, keluarkan perintah berikut: 

```
unload ('select * from venue') 
to 's3://amzn-s3-demo-bucket/tickit/venue/tab' 
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
delimiter as '\t';
```

Atau, Anda dapat menggunakan spesifikasi FIXEDWIDTH. Spesifikasi ini terdiri dari pengenal untuk setiap kolom tabel dan lebar kolom (jumlah karakter). Perintah UNLOAD akan gagal daripada memotong data, jadi tentukan lebar yang setidaknya sepanjang entri terpanjang untuk kolom itu. Membongkar data dengan lebar tetap bekerja mirip dengan membongkar data yang dibatasi, kecuali bahwa output yang dihasilkan tidak mengandung karakter pembatas. Contoh: 

```
unload ('select * from venue')
to 's3://amzn-s3-demo-bucket/tickit/venue/fw' 
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
fixedwidth '0:3,1:100,2:30,3:2,4:6';
```

Output dengan lebar tetap terlihat seperti ini: 

```
20 Air Canada Centre         Toronto      ON0
60 Rexall Place              Edmonton     AB0
100U.S. Cellular Field       Chicago      IL40615
200Al Hirschfeld Theatre     New York CityNY0
240San Jose Repertory TheatreSan Jose     CA0
300Kennedy Center Opera HouseWashington   DC0
```

Untuk detail selengkapnya tentang spesifikasi FIXEDWIDTH, lihat perintah. [MEMBONGKAR](r_UNLOAD.md)

# Memuat ulang data yang dibongkar
<a name="t_Reloading_unload_files"></a>

Untuk memuat ulang hasil operasi pembongkaran, Anda dapat menggunakan perintah COPY.

Contoh berikut menunjukkan kasus sederhana di mana tabel VENUE diturunkan menggunakan file manifes, terpotong, dan dimuat ulang. 

```
unload  ('select * from venue order by venueid')
to 's3://amzn-s3-demo-bucket/tickit/venue/reload_' 
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' 
manifest 
delimiter '|';

truncate venue;

copy venue 
from 's3://amzn-s3-demo-bucket/tickit/venue/reload_manifest' 
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
manifest 
delimiter '|';
```

Setelah dimuat ulang, tabel VENUE terlihat seperti ini: 

```
select * from venue order by venueid limit 5;

 venueid |         venuename         |  venuecity  | venuestate | venueseats
---------+---------------------------+-------------+------------+-----------
       1 | Toyota Park               | Bridgeview  | IL         |          0
       2 | Columbus Crew Stadium     | Columbus    | OH         |          0
       3 | RFK Stadium               | Washington  | DC         |          0
       4 | CommunityAmerica Ballpark | Kansas City | KS         |          0
       5 | Gillette Stadium          | Foxborough  | MA         |      68756
(5 rows)
```