

 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.

# MENYONTEK
<a name="r_COPY"></a>


|  | 
| --- |
| Enkripsi sisi klien 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. | 

Memuat data ke dalam tabel dari file data atau dari tabel Amazon DynamoDB. File dapat ditemukan di bucket Amazon Simple Storage Service (Amazon S3), cluster EMR Amazon, atau host jarak jauh yang diakses menggunakan koneksi Secure Shell (SSH).

**catatan**  
Tabel eksternal Amazon Redshift Spectrum hanya bisa dibaca. Anda tidak dapat MENYALIN ke tabel eksternal.

Perintah COPY menambahkan data input sebagai baris tambahan ke tabel.

Ukuran maksimum satu baris input dari sumber apa pun adalah 4 MB.

**Topics**
+ [Izin yang diperlukan](#r_COPY-permissions)
+ [COPY sintaks](#r_COPY-syntax)
+ [Parameter yang diperlukan](#r_COPY-syntax-required-parameters)
+ [Parameter opsional](#r_COPY-syntax-overview-optional-parameters)
+ [Catatan penggunaan dan sumber daya tambahan untuk perintah COPY](#r_COPY-using-the-copy-command)
+ [COPY contoh perintah](#r_COPY-using-the-copy-command-examples)
+ [SALIN PEKERJAAN](r_COPY-JOB.md)
+ [COPY dengan TEMPLATE](r_COPY-WITH-TEMPLATE.md)
+ [Referensi parameter COPY](r_COPY-parameters.md)
+ [Catatan penggunaan](r_COPY_usage_notes.md)
+ [Contoh COPY](r_COPY_command_examples.md)

## Izin yang diperlukan
<a name="r_COPY-permissions"></a>

Untuk menggunakan perintah COPY, Anda harus memiliki [INSERT](r_GRANT.md#grant-insert) hak istimewa untuk tabel Amazon Redshift.

## COPY sintaks
<a name="r_COPY-syntax"></a>

```
COPY table-name 
[ column-list ]
FROM data_source
authorization
[ [ FORMAT ] [ AS ] data_format ] 
[ parameter [ argument ] [, ... ] ]
```

Anda dapat melakukan operasi COPY dengan sedikitnya tiga parameter: nama tabel, sumber data, dan otorisasi untuk mengakses data. 

Amazon Redshift memperluas fungsionalitas perintah COPY untuk memungkinkan Anda memuat data dalam beberapa format data dari berbagai sumber data, mengontrol akses untuk memuat data, mengelola transformasi data, dan mengelola operasi pemuatan. 

Bagian berikut menyajikan parameter perintah COPY yang diperlukan, mengelompokkan parameter opsional berdasarkan fungsi. Mereka juga menjelaskan setiap parameter dan menjelaskan bagaimana berbagai opsi bekerja sama. Anda dapat langsung menuju deskripsi parameter dengan menggunakan daftar parameter alfabet. 

## Parameter yang diperlukan
<a name="r_COPY-syntax-required-parameters"></a>

Perintah COPY membutuhkan tiga elemen: 
+ [Table Name](#r_COPY-syntax-overview-table-name)
+ [Data Source](#r_COPY-syntax-overview-data-source)
+ [Authorization](#r_COPY-syntax-overview-credentials)

Perintah COPY paling sederhana menggunakan format berikut. 

```
COPY table-name 
FROM data-source
authorization;
```

Contoh berikut membuat tabel bernama CATDEMO, dan kemudian memuat tabel dengan data sampel dari file data di Amazon `category_pipe.txt` S3 bernama. 

```
create table catdemo(catid smallint, catgroup varchar(10), catname varchar(10), catdesc varchar(50));
```

Dalam contoh berikut, sumber data untuk perintah COPY adalah file data bernama `category_pipe.txt` dalam `tickit` folder bucket Amazon S3 bernama. `redshift-downloads` Perintah COPY diizinkan untuk mengakses bucket Amazon S3 melalui peran AWS Identity and Access Management (IAM). Jika klaster Anda memiliki peran IAM yang sudah ada dengan izin untuk mengakses Amazon S3 terlampir, Anda dapat mengganti Nama Sumber Daya Amazon (ARN) peran Anda dalam perintah COPY berikut dan menjalankannya.

```
copy catdemo
from 's3://redshift-downloads/tickit/category_pipe.txt'
iam_role 'arn:aws:iam::<aws-account-id>:role/<role-name>'
region 'us-east-1';
```

Untuk petunjuk lengkap tentang cara menggunakan perintah COPY untuk memuat data sampel, termasuk petunjuk untuk memuat data dari AWS wilayah lain, lihat Memuat [Data Sampel dari Amazon S3 di Panduan](https://docs.aws.amazon.com/redshift/latest/gsg/rs-gsg-create-sample-db.html) Memulai Amazon Redshift.

*nama-meja*  <a name="r_COPY-syntax-overview-table-name"></a>
Nama tabel target untuk perintah COPY. Tabel harus sudah ada dalam basis data. Tabel bisa bersifat sementara atau persisten. Perintah COPY menambahkan data input baru ke setiap baris yang ada dalam tabel.

DARI *data-sumber*  <a name="r_COPY-syntax-overview-data-source"></a>
Lokasi data sumber yang akan dimuat ke dalam tabel target. File manifes dapat ditentukan dengan beberapa sumber data.   
Repositori data yang paling umum digunakan adalah bucket Amazon S3. Anda juga dapat memuat dari file data yang terletak di kluster EMR Amazon, instans Amazon EC2, atau host jarak jauh yang dapat diakses kluster menggunakan koneksi SSH, atau Anda dapat memuat langsung dari tabel DynamoDB.   
+ [SALIN dari Amazon S3](copy-parameters-data-source-s3.md)
+ [SALIN dari Amazon EMR](copy-parameters-data-source-emr.md) 
+ [COPY dari host jarak jauh (SSH)](copy-parameters-data-source-ssh.md)
+ [SALIN dari Amazon DynamoDB](copy-parameters-data-source-dynamodb.md)

Otorisasi  <a name="r_COPY-syntax-overview-credentials"></a>
Klausa yang menunjukkan metode yang digunakan klaster Anda untuk otentikasi dan otorisasi untuk mengakses sumber daya lain. AWS Perintah COPY memerlukan otorisasi untuk mengakses data di AWS sumber daya lain, termasuk di Amazon S3, Amazon EMR, Amazon DynamoDB, dan Amazon EC2. Anda dapat memberikan otorisasi tersebut dengan mereferensikan peran IAM yang dilampirkan ke klaster Anda atau dengan memberikan ID kunci akses dan kunci akses rahasia untuk pengguna IAM.   
+ [Parameter otorisasi](copy-parameters-authorization.md) 
+ [Kontrol akses berbasis peran](copy-usage_notes-access-permissions.md#copy-usage_notes-access-role-based) 
+ [Kontrol akses berbasis kunci](copy-usage_notes-access-permissions.md#copy-usage_notes-access-key-based) 

## Parameter opsional
<a name="r_COPY-syntax-overview-optional-parameters"></a>

Anda dapat secara opsional menentukan cara COPY memetakan data bidang ke kolom di tabel target, menentukan atribut data sumber untuk mengaktifkan perintah COPY membaca dan mengurai data sumber dengan benar, dan mengelola operasi mana yang dilakukan perintah COPY selama proses pemuatan. 
+ [Opsi pemetaan kolom](copy-parameters-column-mapping.md)
+ [Parameter format data](#r_COPY-syntax-overview-data-format)
+ [Parameter konversi data](#r_COPY-syntax-overview-data-conversion)
+ [Operasi pemuatan data](#r_COPY-syntax-overview-data-load)

### Pemetaan kolom
<a name="r_COPY-syntax-overview-column-mapping"></a>

Secara default, COPY menyisipkan nilai bidang ke kolom tabel target dalam urutan yang sama seperti bidang yang terjadi dalam file data. Jika urutan kolom default tidak akan berfungsi, Anda dapat menentukan daftar kolom atau menggunakan JSONPath ekspresi untuk memetakan bidang data sumber ke kolom target. 
+ [Column List](copy-parameters-column-mapping.md#copy-column-list)
+ [JSONPaths File](copy-parameters-column-mapping.md#copy-column-mapping-jsonpaths)

### Parameter format data
<a name="r_COPY-syntax-overview-data-format"></a>

Anda dapat memuat data dari file teks dalam lebar tetap, dibatasi karakter, nilai dipisahkan koma (CSV), atau format JSON, atau dari file Avro.

Secara default, perintah COPY mengharapkan data sumber berada dalam file teks UTF-8 yang dibatasi karakter. Pembatas default adalah karakter pipa (\$1). Jika data sumber dalam format lain, gunakan parameter berikut untuk menentukan format data.
+ [FORMAT](copy-parameters-data-format.md#copy-format)
+ [CSV](copy-parameters-data-format.md#copy-csv)
+ [DELIMITER](copy-parameters-data-format.md#copy-delimiter) 
+ [FIXEDWIDTH](copy-parameters-data-format.md#copy-fixedwidth) 
+ [SHAPEFILE](copy-parameters-data-format.md#copy-shapefile) 
+ [AVRO](copy-parameters-data-format.md#copy-avro) 
+ [JSON format for COPY](copy-parameters-data-format.md#copy-json) 
+ [ENCRYPTED](copy-parameters-data-source-s3.md#copy-encrypted) 
+ [BZIP2](copy-parameters-file-compression.md#copy-bzip2) 
+ [GZIP](copy-parameters-file-compression.md#copy-gzip) 
+ [LZOP](copy-parameters-file-compression.md#copy-lzop) 
+ [PARQUET](copy-parameters-data-format.md#copy-parquet) 
+ [ORC](copy-parameters-data-format.md#copy-orc) 
+ [ZSTD](copy-parameters-file-compression.md#copy-zstd) 

### Parameter konversi data
<a name="r_COPY-syntax-overview-data-conversion"></a>

Saat memuat tabel, COPY mencoba untuk secara implisit mengonversi string dalam data sumber ke tipe data kolom target. Jika Anda perlu menentukan konversi yang berbeda dari perilaku default, atau jika konversi default menghasilkan kesalahan, Anda dapat mengelola konversi data dengan menentukan parameter berikut.
+ [ACCEPTANYDATE](copy-parameters-data-conversion.md#copy-acceptanydate) 
+ [ACCEPTINVCHARS](copy-parameters-data-conversion.md#copy-acceptinvchars) 
+ [BLANKSASNULL](copy-parameters-data-conversion.md#copy-blanksasnull) 
+ [DATEFORMAT](copy-parameters-data-conversion.md#copy-dateformat) 
+ [EMPTYASNULL](copy-parameters-data-conversion.md#copy-emptyasnull) 
+ [ENCODING](copy-parameters-data-conversion.md#copy-encoding) 
+ [ESCAPE](copy-parameters-data-conversion.md#copy-escape) 
+ [EXPLICIT_IDS](copy-parameters-data-conversion.md#copy-explicit-ids) 
+ [FILLRECORD](copy-parameters-data-conversion.md#copy-fillrecord) 
+ [IGNOREBLANKLINES](copy-parameters-data-conversion.md#copy-ignoreblanklines) 
+ [IGNOREHEADER](copy-parameters-data-conversion.md#copy-ignoreheader) 
+ [NULL AS](copy-parameters-data-conversion.md#copy-null-as) 
+ [REMOVEQUOTES](copy-parameters-data-conversion.md#copy-removequotes) 
+ [ROUNDEC](copy-parameters-data-conversion.md#copy-roundec) 
+ [TIMEFORMAT](copy-parameters-data-conversion.md#copy-timeformat) 
+ [TRIMBLANKS](copy-parameters-data-conversion.md#copy-trimblanks) 
+ [TRUNCATECOLUMNS](copy-parameters-data-conversion.md#copy-truncatecolumns) 

### Operasi pemuatan data
<a name="r_COPY-syntax-overview-data-load"></a>

Kelola perilaku default operasi pemuatan untuk pemecahan masalah atau untuk mengurangi waktu muat dengan menentukan parameter berikut. 
+ [COMPROWS](copy-parameters-data-load.md#copy-comprows) 
+ [COMPUPDATE](copy-parameters-data-load.md#copy-compupdate) 
+ [IGNOREALLERRORS](copy-parameters-data-load.md#copy-ignoreallerrors) 
+ [MAXERROR](copy-parameters-data-load.md#copy-maxerror) 
+ [NOLOAD](copy-parameters-data-load.md#copy-noload) 
+ [STATUPDATE](copy-parameters-data-load.md#copy-statupdate) 

## Catatan penggunaan dan sumber daya tambahan untuk perintah COPY
<a name="r_COPY-using-the-copy-command"></a>

Untuk informasi selengkapnya tentang cara menggunakan perintah COPY, lihat topik berikut: 
+ [Catatan penggunaan](r_COPY_usage_notes.md)
+ [Tutorial: Memuat data dari Amazon S3](tutorial-loading-data.md)
+ [Praktik terbaik Amazon Redshift untuk memuat data](c_loading-data-best-practices.md)
+ [Memuat tabel dengan perintah COPY](t_Loading_tables_with_the_COPY_command.md)
  + [Memuat data dari Amazon S3](t_Loading-data-from-S3.md)
  + [Memuat data dari Amazon EMR](loading-data-from-emr.md)
  + [Memuat data dari host jarak jauh](loading-data-from-remote-hosts.md) 
  + [Memuat data dari tabel Amazon DynamoDB](t_Loading-data-from-dynamodb.md)
+ [Memecahkan masalah beban data](t_Troubleshooting_load_errors.md)

## COPY contoh perintah
<a name="r_COPY-using-the-copy-command-examples"></a>

Untuk contoh lainnya yang menunjukkan cara MENYALIN dari berbagai sumber, dalam format yang berbeda, dan dengan opsi COPY yang berbeda, lihat. [Contoh COPY](r_COPY_command_examples.md)

# SALIN PEKERJAAN
<a name="r_COPY-JOB"></a>

Untuk informasi tentang menggunakan perintah ini, lihat[Buat integrasi acara S3 untuk menyalin file secara otomatis dari bucket Amazon S3](loading-data-copy-job.md).

Mengelola perintah COPY yang memuat data ke dalam tabel. Perintah COPY JOB adalah perpanjangan dari perintah COPY dan mengotomatiskan pemuatan data dari bucket Amazon S3. Saat Anda membuat pekerjaan COPY, Amazon Redshift mendeteksi kapan file Amazon S3 baru dibuat di jalur yang ditentukan, lalu memuatnya secara otomatis tanpa campur tangan Anda. Parameter yang sama yang digunakan dalam perintah COPY asli digunakan saat memuat data. Amazon Redshift melacak file yang dimuat (berdasarkan nama file) untuk memverifikasi bahwa file tersebut dimuat hanya satu kali.

**catatan**  
Untuk informasi tentang perintah COPY, termasuk penggunaan, parameter, dan izin, lihat[MENYONTEK](r_COPY.md).

## Izin yang diperlukan
<a name="r_COPY-JOB-privileges"></a>

Untuk menggunakan perintah COPY JOB, Anda harus memiliki salah satu izin berikut selain semua izin yang diperlukan untuk menggunakan COPY:
+ Superuser
+  Semua hal berikut: 
  +  Izin cakupan CREATE, ALTER, atau DROP yang relevan untuk COPY JOBS dalam database yang ingin Anda SALIN. 
  +  Izin PENGGUNAAN untuk skema yang ingin Anda SALIN, atau izin cakupan PENGGUNAAN untuk skema dalam database yang ingin Anda SALIN. 
  +  Izin INSERT untuk tabel yang ingin Anda SALIN, atau INSERT izin cakupan untuk tabel dalam skema atau database yang ingin Anda SALIN. 

Peran IAM yang ditentukan dengan perintah COPY harus memiliki izin untuk mengakses data yang akan dimuat. Untuk informasi selengkapnya, lihat [Izin IAM untuk COPY, UNLOAD, dan CREATE LIBRARY](copy-usage_notes-access-permissions.md#copy-usage_notes-iam-permissions).

## Sintaks
<a name="r_COPY-JOB-syntax"></a>

Buat pekerjaan penyalinan. Parameter perintah COPY disimpan dengan pekerjaan salin.

Anda tidak dapat menjalankan COPY JOB CREATE dalam lingkup blok transaksi.

```
COPY copy-command JOB CREATE job-name
[AUTO ON | OFF]
```

Ubah konfigurasi pekerjaan penyalinan.

```
COPY JOB ALTER job-name
[AUTO ON | OFF]
```

Jalankan pekerjaan penyalinan. Parameter perintah COPY yang disimpan digunakan.

```
COPY JOB RUN job-name
```

Buat daftar semua pekerjaan salinan.

```
COPY JOB LIST
```

Tampilkan detail pekerjaan penyalinan.

```
COPY JOB SHOW job-name
```

Hapus pekerjaan penyalinan.

Anda tidak dapat menjalankan COPY JOB DROP dalam lingkup blok transaksi.

```
COPY JOB DROP job-name
```

## Parameter
<a name="r_COPY-JOB-parameters"></a>

*salin-perintah*  
Perintah COPY yang memuat data dari Amazon S3 ke Amazon Redshift. Klausa berisi parameter COPY yang menentukan bucket Amazon S3, tabel target, peran IAM, dan parameter lain yang digunakan saat memuat data. Semua parameter perintah COPY untuk pemuatan data Amazon S3 didukung kecuali:  
+ COPY JOB tidak menyerap file yang sudah ada sebelumnya di folder yang ditunjuk oleh perintah COPY. Hanya file yang dibuat setelah stempel waktu pembuatan COPY JOB yang dicerna.
+ Anda tidak dapat menentukan perintah COPY dengan opsi MAXERROR atau IGNOREALLERRORS.
+ Anda tidak dapat menentukan file manifes. COPY JOB memerlukan lokasi Amazon S3 yang ditunjuk untuk memantau file yang baru dibuat.
+ Anda tidak dapat menentukan perintah COPY dengan jenis otorisasi seperti kunci Akses dan Rahasia. Hanya perintah COPY yang menggunakan `IAM_ROLE` parameter untuk otorisasi yang didukung. Untuk informasi selengkapnya, lihat [Parameter otorisasi](copy-parameters-authorization.md).
+ COPY JOB tidak mendukung peran IAM default yang terkait dengan cluster. Anda harus menentukan `IAM_ROLE` dalam perintah COPY. 
Untuk informasi selengkapnya, lihat [SALIN dari Amazon S3](copy-parameters-data-source-s3.md).

*nama-pekerjaan*  
Nama pekerjaan yang digunakan untuk mereferensikan pekerjaan COPY. *Nama pekerjaan* tidak dapat berisi tanda hubung (‐).

 [OTOMATIS HIDUP \$1 MATI]   
Klausul yang menunjukkan apakah data Amazon S3 dimuat secara otomatis ke dalam tabel Amazon Redshift.  
+ Saat`ON`, Amazon Redshift memantau jalur sumber Amazon S3 untuk file yang baru dibuat, dan jika ditemukan, perintah COPY dijalankan dengan parameter COPY dalam definisi pekerjaan. Ini adalah opsi default.
+ Saat`OFF`, Amazon Redshift tidak menjalankan COPY JOB secara otomatis.

## Catatan penggunaan
<a name="r_COPY-JOB-usage-notes"></a>

Opsi perintah COPY tidak divalidasi hingga waktu berjalan. Misalnya, sumber data Amazon S3 yang tidak valid `IAM_ROLE` atau menghasilkan kesalahan waktu proses saat COPY JOB dimulai.

Jika cluster dijeda, COPY JOBS tidak dijalankan.

Untuk menanyakan file perintah COPY yang dimuat dan memuat kesalahan, lihat[STL\$1LOAD\$1COMMIT](r_STL_LOAD_COMMITS.md),[STL\$1LOAD\$1ERRORS](r_STL_LOAD_ERRORS.md),[STL\$1LOADERROR\$1DETAIL](r_STL_LOADERROR_DETAIL.md). Untuk informasi selengkapnya, lihat [Memverifikasi bahwa data dimuat dengan benar](verifying-that-data-loaded-correctly.md).

COPY JOBS tidak didukung pada database Zero-ETL karena beroperasi dalam mode read-only.

## Contoh
<a name="r_COPY-JOB-examples"></a>

Contoh berikut menunjukkan pembuatan COPY JOB untuk memuat data dari bucket Amazon S3. 

```
COPY public.target_table
FROM 's3://amzn-s3-demo-bucket/staging-folder'
IAM_ROLE 'arn:aws:iam::123456789012:role/MyLoadRoleName' 
JOB CREATE my_copy_job_name
AUTO ON;
```

# COPY dengan TEMPLATE
<a name="r_COPY-WITH-TEMPLATE"></a>

Anda dapat menggunakan template Redshift dengan perintah COPY untuk menyederhanakan sintaks perintah dan memastikan konsistensi di seluruh operasi pemuatan data. Alih-alih menentukan parameter pemformatan yang sama berulang kali, Anda mendefinisikannya sekali dalam templat dan mereferensikan templat dalam perintah COPY Anda. Saat Anda menggunakan templat, perintah COPY menggabungkan parameter dari template dengan parameter apa pun yang ditentukan langsung dalam perintah. Jika parameter yang sama muncul di template dan perintah, parameter perintah diutamakan. Untuk informasi selengkapnya, lihat [BUAT TEMPLATE](r_CREATE_TEMPLATE.md). 

Template untuk perintah COPY dapat dibuat dengan:
+ [Parameter format data](copy-parameters-data-format.md)
+ [Parameter kompresi file](copy-parameters-file-compression.md)
+ [Parameter konversi data](copy-parameters-data-conversion.md)
+ [Operasi pemuatan data](copy-parameters-data-load.md)

Untuk daftar lengkap parameter yang didukung, lihat [MENYONTEK](r_COPY.md) perintah.

## Izin yang diperlukan
<a name="r_COPY-WITH-TEMPLATE-privileges"></a>

Untuk menggunakan template dalam perintah COPY, Anda harus memiliki:
+ Semua izin yang diperlukan untuk menjalankan perintah COPY (lihat[Izin yang diperlukan](r_COPY.md#r_COPY-permissions))
+ Salah satu izin template berikut:
  + Hak istimewa pengguna super
  + Hak istimewa PENGGUNAAN pada template dan hak istimewa PENGGUNAAN pada skema yang berisi template

## Sintaksis
<a name="r_COPY-WITH-TEMPLATE-syntax"></a>

```
COPY target_table FROM 's3://...'
authorization
[ option, ...]
USING TEMPLATE [database_name.][schema_name.]template_name;
```

## Parameter
<a name="r_COPY-WITH-TEMPLATE-parameters"></a>

 *database\$1name*   
(Opsional) Nama database tempat template ada. Jika tidak ditentukan, database saat ini digunakan.

 *schema\$1name*   
(Opsional) Nama skema tempat template ada. Jika tidak ditentukan, template dicari di jalur pencarian saat ini.

 *template\$1name*   
Nama template yang akan digunakan dalam COPY. 

## Catatan penggunaan
<a name="r_COPY-WITH_TEMPLATE-usage-notes"></a>
+ Parameter khusus perintah (sumber, tujuan, otorisasi) masih harus ditentukan dalam perintah COPY.
+ Template tidak dapat berisi spesifikasi file manifes untuk perintah COPY.

## Contoh
<a name="r_COPY-WITH-TEMPLATE-examples"></a>

Contoh berikut menunjukkan cara membuat template dan menggunakannya dalam perintah COPY:

```
CREATE TEMPLATE public.test_template FOR COPY AS
CSV DELIMITER '|' IGNOREHEADER 1 MAXERROR 100;

COPY public.target_table
FROM 's3://amzn-s3-demo-bucket/staging-folder'
IAM_ROLE 'arn:aws:iam::123456789012:role/MyLoadRoleName'
USING TEMPLATE public.test_template;
```

Ketika parameter ada di template dan perintah, parameter perintah diutamakan. Dalam contoh ini, jika template `public.test_template` berisi `DELIMITER '|'` tetapi perintah COPY menentukan`DELIMITER ','`, pembatas koma (`,`) dari perintah akan digunakan sebagai pengganti pembatas pipa () dari template. `|` 

```
COPY public.target_table
FROM 's3://amzn-s3-demo-bucket/staging-folder'
IAM_ROLE 'arn:aws:iam::123456789012:role/MyLoadRoleName'
DELIMITER ','
USING TEMPLATE public.test_template;
```

# Referensi parameter COPY
<a name="r_COPY-parameters"></a>

COPY memiliki banyak parameter yang dapat digunakan dalam banyak situasi. Namun, tidak semua parameter didukung dalam setiap situasi. Misalnya, untuk memuat dari file ORC atau PARQUET ada sejumlah parameter yang didukung. Untuk informasi selengkapnya, lihat [COPY dari format data kolumnar](copy-usage_notes-copy-from-columnar.md).

**Topics**
+ [Sumber data](copy-parameters-data-source.md)
+ [Parameter otorisasi](copy-parameters-authorization.md)
+ [Opsi pemetaan kolom](copy-parameters-column-mapping.md)
+ [Parameter format data](copy-parameters-data-format.md)
+ [Parameter kompresi file](copy-parameters-file-compression.md)
+ [Parameter konversi data](copy-parameters-data-conversion.md)
+ [Operasi pemuatan data](copy-parameters-data-load.md)
+ [Daftar parameter abjad](r_COPY-alphabetical-parm-list.md)

# Sumber data
<a name="copy-parameters-data-source"></a>

Anda dapat memuat data dari file teks di bucket Amazon S3, di kluster EMR Amazon, atau pada host jarak jauh yang dapat diakses klaster Anda menggunakan koneksi SSH. Anda juga dapat memuat data langsung dari tabel DynamoDB. 

Ukuran maksimum satu baris input dari sumber apa pun adalah 4 MB. 

Untuk mengekspor data dari tabel ke satu set file di Amazon S3, gunakan perintah. [MEMBONGKAR](r_UNLOAD.md) 

**Topics**
+ [SALIN dari Amazon S3](copy-parameters-data-source-s3.md)
+ [SALIN dari Amazon EMR](copy-parameters-data-source-emr.md)
+ [COPY dari host jarak jauh (SSH)](copy-parameters-data-source-ssh.md)
+ [SALIN dari Amazon DynamoDB](copy-parameters-data-source-dynamodb.md)

# SALIN dari Amazon S3
<a name="copy-parameters-data-source-s3"></a>

Untuk memuat data dari file yang terletak di satu atau beberapa bucket S3, gunakan klausa FROM untuk menunjukkan cara COPY menemukan file di Amazon S3. Anda dapat memberikan jalur objek ke file data sebagai bagian dari klausa FROM, atau Anda dapat memberikan lokasi file manifes yang berisi daftar jalur objek Amazon S3. COPY dari Amazon S3 menggunakan koneksi HTTPS. Pastikan rentang IP S3 ditambahkan ke daftar izin Anda. Untuk mempelajari lebih lanjut tentang rentang IP S3 yang diperlukan, lihat [Isolasi jaringan](https://docs.aws.amazon.com//redshift/latest/mgmt/security-network-isolation.html#network-isolation).

**penting**  
Jika bucket Amazon S3 yang menyimpan file data tidak berada di AWS Wilayah yang sama dengan cluster Anda, Anda harus menggunakan [REGION](#copy-region) parameter untuk menentukan Wilayah tempat data berada. 

**Topics**
+ [Sintaksis](#copy-parameters-data-source-s3-syntax)
+ [Contoh](#copy-parameters-data-source-s3-examples)
+ [Parameter opsional](#copy-parameters-data-source-s3-optional-parms)
+ [Parameter yang tidak didukung](#copy-parameters-data-source-s3-unsupported-parms)

## Sintaksis
<a name="copy-parameters-data-source-s3-syntax"></a>

```
FROM { 's3://objectpath' | 's3://manifest_file' }
authorization
| MANIFEST
| ENCRYPTED
| REGION [AS] 'aws-region'
| optional-parameters
```

## Contoh
<a name="copy-parameters-data-source-s3-examples"></a>

Contoh berikut menggunakan path objek untuk memuat data dari Amazon S3. 

```
copy customer
from 's3://amzn-s3-demo-bucket/customer' 
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole';
```

Contoh berikut menggunakan file manifes untuk memuat data dari Amazon S3. 

```
copy customer
from 's3://amzn-s3-demo-bucket/cust.manifest' 
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
manifest;
```

### Parameter
<a name="copy-parameters-data-source-s3-parameters"></a>

FROM  <a name="copy-parameters-from"></a>
Sumber data yang akan dimuat. Untuk informasi selengkapnya tentang pengkodean file Amazon S3, lihat. [Parameter konversi data](copy-parameters-data-conversion.md)

*'s3://copy\$1from\$1s3\$1objectpath '*   <a name="copy-s3-objectpath"></a>
Menentukan jalur ke objek Amazon S3 yang berisi data—misalnya,. `'s3://amzn-s3-demo-bucket/custdata.txt'` Parameter *s3://copy\$1from\$1s3\$1objectpath* dapat mereferensikan satu file atau satu set objek atau folder yang memiliki key prefix yang sama. Misalnya, nama `custdata.txt` adalah key prefix yang mengacu pada sejumlah file fisik:`custdata.txt`,,, `custdata.txt.1` `custdata.txt.2``custdata.txt.bak`, dan sebagainya. Key prefix juga dapat mereferensikan sejumlah folder. Misalnya, `'s3://amzn-s3-demo-bucket/custfolder'` mengacu pada folder`custfolder`,`custfolder_1`,`custfolder_2`, dan sebagainya. Jika key prefix mereferensikan beberapa folder, semua file dalam folder dimuat. Jika key prefix cocok dengan file serta folder, seperti`custfolder.log`, COPY mencoba memuat file juga. Jika key prefix dapat mengakibatkan COPY mencoba memuat file yang tidak diinginkan, gunakan file manifes. Untuk informasi lebih lanjut, lihat[copy_from_s3_manifest_file](#copy-manifest-file), berikut.   
Jika bucket S3 yang menyimpan file data tidak berada di AWS Region yang sama dengan cluster Anda, Anda harus menggunakan [REGION](#copy-region) parameter tersebut untuk menentukan Wilayah tempat data berada.
Untuk informasi selengkapnya, lihat [Memuat data dari Amazon S3](t_Loading-data-from-S3.md).

*'s3://copy\$1from\$1s3\$1manifest\$1file '*   <a name="copy-manifest-file"></a>
Menentukan kunci objek Amazon S3 untuk file manifes yang mencantumkan file data yang akan dimuat. Argumen *'s3://*copy\$1from\$1s3\$1manifest\$1file' harus secara eksplisit mereferensikan** satu file—misalnya,. `'s3://amzn-s3-demo-bucket/manifest.txt'` Itu tidak dapat mereferensikan key prefix.  
Manifes adalah file teks dalam format JSON yang mencantumkan URL setiap file yang akan dimuat dari Amazon S3. URL menyertakan nama bucket dan path objek lengkap untuk file tersebut. File yang ditentukan dalam manifes dapat berada di bucket yang berbeda, tetapi semua bucket harus berada di AWS Wilayah yang sama dengan cluster Amazon Redshift. Jika file terdaftar dua kali, file dimuat dua kali. Contoh berikut menunjukkan JSON untuk manifes yang memuat tiga file.   

```
{
  "entries": [
    {"url":"s3://amzn-s3-demo-bucket1/custdata.1","mandatory":true},
    {"url":"s3://amzn-s3-demo-bucket1/custdata.2","mandatory":true},
    {"url":"s3://amzn-s3-demo-bucket2/custdata.1","mandatory":false}
  ]
}
```
Karakter tanda kutip ganda diperlukan, dan harus berupa tanda kutip sederhana (0x22), bukan tanda kutip miring atau “pintar”. Setiap entri dalam manifes secara opsional dapat menyertakan `mandatory` bendera. Jika `mandatory` diatur ke`true`, COPY berakhir jika tidak menemukan file untuk entri itu; jika tidak, COPY akan berlanjut. Nilai default-nya `mandatory` is `false`.   
Saat memuat dari file data dalam format ORC atau Parket, `meta` bidang diperlukan, seperti yang ditunjukkan pada contoh berikut.  

```
{  
   "entries":[  
      {  
         "url":"s3://amzn-s3-demo-bucket1/orc/2013-10-04-custdata",
         "mandatory":true,
         "meta":{  
            "content_length":99
         }
      },
      {  
         "url":"s3://amzn-s3-demo-bucket2/orc/2013-10-05-custdata",
         "mandatory":true,
         "meta":{  
            "content_length":99
         }
      }
   ]
}
```
File manifes tidak boleh dienkripsi atau dikompresi, bahkan jika opsi ENCRYPTED, GZIP, LZOP,, atau ZSTD ditentukan. BZIP2 COPY mengembalikan kesalahan jika file manifes yang ditentukan tidak ditemukan atau file manifes tidak terbentuk dengan benar.   
Jika file manifes digunakan, parameter MANIFEST harus ditentukan dengan perintah COPY. Jika parameter MANIFEST tidak ditentukan, COPY mengasumsikan bahwa file yang ditentukan dengan FROM adalah file data.   
Untuk informasi selengkapnya, lihat [Memuat data dari Amazon S3](t_Loading-data-from-S3.md).

*otorisasi*  
Perintah COPY memerlukan otorisasi untuk mengakses data di AWS sumber daya lain, termasuk di Amazon S3, Amazon EMR, Amazon DynamoDB, dan Amazon EC2. Anda dapat memberikan otorisasi tersebut dengan mereferensikan peran AWS Identity and Access Management (IAM) yang dilampirkan ke klaster Anda (kontrol akses berbasis peran) atau dengan memberikan kredenal akses untuk pengguna (kontrol akses berbasis kunci). Untuk meningkatkan keamanan dan fleksibilitas, sebaiknya gunakan kontrol akses berbasis peran IAM. Untuk informasi selengkapnya, lihat [Parameter otorisasi](copy-parameters-authorization.md).

NYATA  <a name="copy-manifest"></a>
Menentukan bahwa manifes digunakan untuk mengidentifikasi file data yang akan dimuat dari Amazon S3. Jika parameter MANIFEST digunakan, COPY memuat data dari file yang tercantum dalam manifes yang direferensikan oleh *'s3://copy\$1from\$1s3\$1manifest\$1file'*. Jika file manifes tidak ditemukan, atau tidak dibentuk dengan benar, COPY gagal. Untuk informasi selengkapnya, lihat [Menggunakan manifes untuk menentukan file data](loading-data-files-using-manifest.md).

DIENKRIPSI  <a name="copy-encrypted"></a>
Klausa yang menetapkan bahwa file input di Amazon S3 dienkripsi menggunakan enkripsi sisi klien dengan kunci yang dikelola pelanggan. Untuk informasi selengkapnya, lihat [Memuat file data terenkripsi dari Amazon S3](c_loading-encrypted-files.md). Jangan tentukan ENCRYPTED jika file input dienkripsi menggunakan enkripsi sisi server Amazon S3 (SSE-KMS atau SSE-S3). COPY membaca file terenkripsi sisi server secara otomatis.  
Jika Anda menentukan parameter ENCRYPTED, Anda juga harus menentukan [MASTER_SYMMETRIC_KEY](#copy-master-symmetric-key) parameter atau menyertakan **master\$1symmetric\$1key** nilai dalam string. [Menggunakan parameter CREDENTIALS](copy-parameters-authorization.md#copy-credentials)  
Jika file terenkripsi dalam format terkompresi, tambahkan parameter GZIP, LZOP, atau ZSTD. BZIP2  
File dan JSONPaths file manifes tidak boleh dienkripsi, bahkan jika opsi TERENKRIPSI ditentukan.

*MASTER\$1SYMMETRIC\$1KEY 'root\$1key'*  <a name="copy-master-symmetric-key"></a>
Kunci simetris root yang digunakan untuk mengenkripsi file data di Amazon S3. Jika MASTER\$1SYMMETRIC\$1KEY ditentukan, parameter juga harus ditentukan. [ENCRYPTED](#copy-encrypted) MASTER\$1SYMMETRIC\$1KEY tidak dapat digunakan dengan parameter CREDENTIALS. Untuk informasi selengkapnya, lihat [Memuat file data terenkripsi dari Amazon S3](c_loading-encrypted-files.md).  
Jika file terenkripsi dalam format terkompresi, tambahkan parameter GZIP, LZOP, atau ZSTD. BZIP2

WILAYAH [AS] '*aws-region*'  <a name="copy-region"></a>
Menentukan AWS Wilayah tempat data sumber berada. REGION diperlukan untuk COPY dari bucket Amazon S3 atau tabel DynamoDB jika AWS sumber daya yang berisi data tidak berada di Wilayah yang sama dengan cluster Amazon Redshift.   
Nilai untuk *aws\$1region harus cocok dengan Region* yang tercantum di wilayah [Amazon Redshift](https://docs.aws.amazon.com/general/latest/gr/rande.html#redshift_region) dan tabel titik akhir.  
Jika parameter REGION ditentukan, semua sumber daya, termasuk file manifes atau beberapa bucket Amazon S3, harus berada di Wilayah yang ditentukan.   
Mentransfer data di seluruh Wilayah menimbulkan biaya tambahan terhadap bucket Amazon S3 atau tabel DynamoDB yang berisi data. Untuk informasi selengkapnya tentang harga, lihat **Transfer Data KELUAR Dari Amazon S3 Ke AWS Wilayah Lain** di halaman Harga [Amazon S3](https://aws.amazon.com/s3/pricing/) **dan Transfer Data** KELUAR di halaman Harga Amazon [DynamoDB](https://aws.amazon.com/dynamodb/pricing/). 
Secara default, COPY mengasumsikan bahwa data terletak di Wilayah yang sama dengan cluster Amazon Redshift. 

## Parameter opsional
<a name="copy-parameters-data-source-s3-optional-parms"></a>

Anda dapat secara opsional menentukan parameter berikut dengan COPY dari Amazon S3: 
+ [Opsi pemetaan kolom](copy-parameters-column-mapping.md)
+ [Parameter format data](copy-parameters-data-format.md#copy-data-format-parameters)
+ [Parameter konversi data](copy-parameters-data-conversion.md)
+ [Operasi pemuatan data](copy-parameters-data-load.md)

## Parameter yang tidak didukung
<a name="copy-parameters-data-source-s3-unsupported-parms"></a>

Anda tidak dapat menggunakan parameter berikut dengan COPY dari Amazon S3: 
+ SSH
+ RASIO BACA

# SALIN dari Amazon EMR
<a name="copy-parameters-data-source-emr"></a>

Anda dapat menggunakan perintah COPY untuk memuat data secara paralel dari kluster EMR Amazon yang dikonfigurasi untuk menulis file teks ke Hadoop Distributed File System (HDFS) cluster dalam bentuk file dengan lebar tetap, file yang dibatasi karakter, file CSV, file berformat JSON, atau file Avro.

**Topics**
+ [Sintaksis](#copy-parameters-data-source-emr-syntax)
+ [Contoh](#copy-parameters-data-source-emr-example)
+ [Parameter](#copy-parameters-data-source-emr-parameters)
+ [Parameter yang didukung](#copy-parameters-data-source-emr-optional-parms)
+ [Parameter yang tidak didukung](#copy-parameters-data-source-emr-unsupported-parms)

## Sintaksis
<a name="copy-parameters-data-source-emr-syntax"></a>

```
FROM 'emr://emr_cluster_id/hdfs_filepath'  
authorization
[ optional_parameters ]
```

## Contoh
<a name="copy-parameters-data-source-emr-example"></a>

Contoh berikut memuat data dari cluster EMR Amazon. 

```
copy sales
from 'emr://j-SAMPLE2B500FC/myoutput/part-*' 
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole';
```

## Parameter
<a name="copy-parameters-data-source-emr-parameters"></a>

FROM  
Sumber data yang akan dimuat. 

 *'emr://emr\$1cluster\$1id/ *hdfs\$1file\$1path* '*  <a name="copy-emr"></a>
Pengidentifikasi unik untuk cluster EMR Amazon dan jalur file HDFS yang mereferensikan file data untuk perintah COPY. Nama file data HDFS tidak boleh berisi tanda bintang karakter wildcard (\$1) dan tanda tanya (?).   
Cluster EMR Amazon harus terus berjalan hingga operasi COPY selesai. Jika salah satu file data HDFS diubah atau dihapus sebelum operasi COPY selesai, Anda mungkin memiliki hasil yang tidak terduga, atau operasi COPY mungkin gagal. 
Anda dapat menggunakan karakter wildcard asterisk (\$1) dan tanda tanya (?) sebagai bagian dari argumen *hdfs\$1file\$1path* untuk menentukan beberapa file yang akan dimuat. Misalnya, `'emr://j-SAMPLE2B500FC/myoutput/part*'` mengidentifikasi file`part-0000`,`part-0001`, dan sebagainya. Jika path file tidak berisi karakter wildcard, itu diperlakukan sebagai string literal. Jika Anda hanya menentukan nama folder, COPY mencoba memuat semua file di folder.   
Jika Anda menggunakan karakter wildcard atau hanya menggunakan nama folder, verifikasi bahwa tidak ada file yang tidak diinginkan yang akan dimuat. Misalnya, beberapa proses mungkin menulis file log ke folder output.
Untuk informasi selengkapnya, lihat [Memuat data dari Amazon EMR](loading-data-from-emr.md).

*otorisasi*  
Perintah COPY memerlukan otorisasi untuk mengakses data di AWS sumber daya lain, termasuk di Amazon S3, Amazon EMR, Amazon DynamoDB, dan Amazon EC2. Anda dapat memberikan otorisasi tersebut dengan mereferensikan peran AWS Identity and Access Management (IAM) yang dilampirkan ke klaster Anda (kontrol akses berbasis peran) atau dengan memberikan kredenal akses untuk pengguna (kontrol akses berbasis kunci). Untuk meningkatkan keamanan dan fleksibilitas, sebaiknya gunakan kontrol akses berbasis peran IAM. Untuk informasi selengkapnya, lihat [Parameter otorisasi](copy-parameters-authorization.md).

## Parameter yang didukung
<a name="copy-parameters-data-source-emr-optional-parms"></a>

Anda dapat secara opsional menentukan parameter berikut dengan COPY dari Amazon EMR: 
+ [Opsi pemetaan kolom](copy-parameters-column-mapping.md)
+ [Parameter format data](copy-parameters-data-format.md#copy-data-format-parameters)
+ [Parameter konversi data](copy-parameters-data-conversion.md)
+ [Operasi pemuatan data](copy-parameters-data-load.md)

## Parameter yang tidak didukung
<a name="copy-parameters-data-source-emr-unsupported-parms"></a>

Anda tidak dapat menggunakan parameter berikut dengan COPY dari Amazon EMR: 
+ DIENKRIPSI
+ NYATA
+ DAERAH
+ RASIO BACA
+ SSH

# COPY dari host jarak jauh (SSH)
<a name="copy-parameters-data-source-ssh"></a>

Anda dapat menggunakan perintah COPY untuk memuat data secara paralel dari satu atau beberapa host jarak jauh, seperti instans Amazon Elastic Compute Cloud (Amazon EC2) atau komputer lain. COPY terhubung ke host jarak jauh menggunakan Secure Shell (SSH) dan menjalankan perintah pada host jarak jauh untuk menghasilkan output teks. Host jarak jauh dapat berupa instans Linux EC2 atau komputer Unix atau Linux lain yang dikonfigurasi untuk menerima koneksi SSH. Amazon Redshift dapat terhubung ke beberapa host, dan dapat membuka beberapa koneksi SSH ke setiap host. Amazon Redshift mengirimkan perintah unik melalui setiap koneksi untuk menghasilkan output teks ke output standar host, yang kemudian dibaca Amazon Redshift seperti halnya file teks.

Gunakan klausa FROM untuk menentukan kunci objek Amazon S3 untuk file manifes yang menyediakan informasi yang digunakan COPY untuk membuka koneksi SSH dan menjalankan perintah jarak jauh. 

**Topics**
+ [Sintaksis](#copy-parameters-data-source-ssh-syntax)
+ [Contoh](#copy-parameters-data-source-ssh-examples)
+ [Parameter](#copy-parameters-data-source-ssh-parameters)
+ [Parameter opsional](#copy-parameters-data-source-ssh-optional-parms)
+ [Parameter yang tidak didukung](#copy-parameters-data-source-ssh-unsupported-parms)

**penting**  
 Jika bucket S3 yang menyimpan file manifes tidak berada di AWS Region yang sama dengan cluster, Anda harus menggunakan parameter REGION untuk menentukan Region tempat bucket berada. 

## Sintaksis
<a name="copy-parameters-data-source-ssh-syntax"></a>

```
FROM 's3://'ssh_manifest_file' }
authorization
SSH
| optional-parameters
```

## Contoh
<a name="copy-parameters-data-source-ssh-examples"></a>

Contoh berikut menggunakan file manifes untuk memuat data dari host jarak jauh menggunakan SSH. 

```
copy sales
from 's3://amzn-s3-demo-bucket/ssh_manifest' 
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
ssh;
```

## Parameter
<a name="copy-parameters-data-source-ssh-parameters"></a>

FROM  
Sumber data yang akan dimuat. 

*'s3://copy\$1from\$1ssh\$1manifest\$1file '*  <a name="copy-ssh-manifest"></a>
Perintah COPY dapat terhubung ke beberapa host menggunakan SSH, dan dapat membuat beberapa koneksi SSH ke setiap host. COPY menjalankan perintah melalui setiap koneksi host, dan kemudian memuat output dari perintah secara paralel ke dalam tabel. Argumen *s3://copy\$1from\$1ssh\$1manifest\$1file* menentukan kunci objek Amazon S3 untuk file manifes yang menyediakan informasi yang digunakan COPY untuk membuka koneksi SSH dan menjalankan perintah jarak jauh.  
Argumen *s3://copy\$1from\$1ssh\$1manifest\$1file* harus secara eksplisit mereferensikan satu file; itu tidak bisa menjadi key prefix. Berikut ini menunjukkan contoh:  

```
's3://amzn-s3-demo-bucket/ssh_manifest.txt'
```
File manifes adalah file teks dalam format JSON yang digunakan Amazon Redshift untuk terhubung ke host. File manifes menentukan titik akhir host SSH dan perintah yang akan dijalankan pada host untuk mengembalikan data ke Amazon Redshift. Secara opsional, Anda dapat menyertakan kunci publik host, nama pengguna login, dan bendera wajib untuk setiap entri. Contoh berikut menunjukkan file manifes yang menciptakan dua koneksi SSH:   

```
{ 
    "entries": [ 
	    {"endpoint":"<ssh_endpoint_or_IP>", 
           "command": "<remote_command>",
           "mandatory":true, 
           "publickey": "<public_key>", 
           "username": "<host_user_name>"}, 
	    {"endpoint":"<ssh_endpoint_or_IP>", 
           "command": "<remote_command>",
           "mandatory":true, 
           "publickey": "<public_key>", 
           "username": "<host_user_name>"} 
     ] 
}
```
File manifes berisi satu `"entries"` konstruksi untuk setiap koneksi SSH. Anda dapat memiliki beberapa koneksi ke satu host atau beberapa koneksi ke beberapa host. Karakter tanda kutip ganda diperlukan seperti yang ditunjukkan, baik untuk nama bidang maupun nilainya. Karakter tanda kutip harus berupa tanda kutip sederhana (0x22), bukan tanda kutip miring atau “pintar”. Satu-satunya nilai yang tidak memerlukan karakter tanda kutip ganda adalah nilai Boolean `true` atau `false` untuk bidang. `"mandatory"`   
Daftar berikut menjelaskan bidang dalam file manifes.     
titik akhir  <a name="copy-ssh-manifest-endpoint"></a>
Alamat URL atau alamat IP host—misalnya,`"ec2-111-222-333.compute-1.amazonaws.com"`, atau. `"198.51.100.0"`   
perintah  <a name="copy-ssh-manifest-command"></a>
Perintah yang akan dijalankan oleh host untuk menghasilkan output teks atau output biner dalam format gzip, lzop, bzip2, atau zstd. Perintah dapat berupa perintah apa pun yang pengguna *“host\$1user\$1name”* memiliki izin untuk dijalankan. Perintahnya bisa sesederhana mencetak file, atau bisa menanyakan database atau meluncurkan skrip. Output (file teks, file biner gzip, file biner lzop, atau file biner bzip2) harus dalam bentuk yang dapat dikonsumsi oleh perintah Amazon Redshift COPY. Untuk informasi selengkapnya, lihat [Mempersiapkan data masukan Anda](t_preparing-input-data.md).  
kunci publik  <a name="copy-ssh-manifest-publickey"></a>
(Opsional) Kunci publik tuan rumah. Jika tersedia, Amazon Redshift akan menggunakan kunci publik untuk mengidentifikasi host. Jika kunci publik tidak disediakan, Amazon Redshift tidak akan mencoba identifikasi host. Misalnya, jika kunci publik host jarak jauh adalah`ssh-rsa AbcCbaxxx…Example root@amazon.com`, ketik teks berikut di bidang kunci publik: `"AbcCbaxxx…Example"`  
wajib  <a name="copy-ssh-manifest-mandatory"></a>
(Opsional) Klausa yang menunjukkan apakah perintah COPY harus gagal jika upaya koneksi gagal. Nilai default-nya `false`. Jika Amazon Redshift tidak berhasil membuat setidaknya satu koneksi, perintah COPY gagal.  
nama pengguna  <a name="copy-ssh-manifest-username"></a>
(Opsional) Nama pengguna yang akan digunakan untuk masuk ke sistem host dan menjalankan perintah jarak jauh. Nama login pengguna harus sama dengan login yang digunakan untuk menambahkan kunci publik klaster Amazon Redshift ke file kunci resmi host. Nama pengguna default adalah`redshift`.
Untuk informasi selengkapnya tentang membuat file manifes, lihat[Memuat proses data](loading-data-from-remote-hosts.md#load-from-host-process).  
Untuk COPY dari host jarak jauh, parameter SSH harus ditentukan dengan perintah COPY. Jika parameter SSH tidak ditentukan, COPY mengasumsikan bahwa file yang ditentukan dengan FROM adalah file data dan akan gagal.   
Jika Anda menggunakan kompresi otomatis, perintah COPY melakukan dua operasi baca data, yang berarti akan menjalankan perintah jarak jauh dua kali. Operasi baca pertama adalah menyediakan sampel data untuk analisis kompresi, kemudian operasi baca kedua benar-benar memuat data. Jika menjalankan perintah jarak jauh dua kali dapat menyebabkan masalah, Anda harus menonaktifkan kompresi otomatis. Untuk menonaktifkan kompresi otomatis, jalankan perintah COPY dengan parameter COMPUPDATE diatur ke OFF. Untuk informasi selengkapnya, lihat [Memuat tabel dengan kompresi otomatis](c_Loading_tables_auto_compress.md).  
Untuk prosedur rinci untuk menggunakan COPY dari SSH, lihat[Memuat data dari host jarak jauh](loading-data-from-remote-hosts.md).

*otorisasi*  
Perintah COPY memerlukan otorisasi untuk mengakses data di AWS sumber daya lain, termasuk di Amazon S3, Amazon EMR, Amazon DynamoDB, dan Amazon EC2. Anda dapat memberikan otorisasi tersebut dengan mereferensikan peran AWS Identity and Access Management (IAM) yang dilampirkan ke klaster Anda (kontrol akses berbasis peran) atau dengan memberikan kredenal akses untuk pengguna (kontrol akses berbasis kunci). Untuk meningkatkan keamanan dan fleksibilitas, sebaiknya gunakan kontrol akses berbasis peran IAM. Untuk informasi selengkapnya, lihat [Parameter otorisasi](copy-parameters-authorization.md).

SSH  <a name="copy-ssh"></a>
Klausa yang menentukan bahwa data akan dimuat dari host jarak jauh menggunakan protokol SSH. Jika Anda menentukan SSH, Anda juga harus menyediakan file manifes menggunakan [s3://copy_from_ssh_manifest_file](#copy-ssh-manifest) argumen.   
Jika Anda menggunakan SSH untuk menyalin dari host menggunakan alamat IP pribadi di VPC jarak jauh, VPC harus mengaktifkan perutean VPC yang ditingkatkan. Untuk informasi selengkapnya tentang perutean VPC yang Ditingkatkan, lihat Perutean VPC yang Ditingkatkan Amazon [Redshift](https://docs.aws.amazon.com/redshift/latest/mgmt/enhanced-vpc-routing.html).

## Parameter opsional
<a name="copy-parameters-data-source-ssh-optional-parms"></a>

Anda dapat secara opsional menentukan parameter berikut dengan COPY dari SSH: 
+ [Opsi pemetaan kolom](copy-parameters-column-mapping.md)
+ [Parameter format data](copy-parameters-data-format.md#copy-data-format-parameters)
+ [Parameter konversi data](copy-parameters-data-conversion.md)
+ [Operasi pemuatan data](copy-parameters-data-load.md)

## Parameter yang tidak didukung
<a name="copy-parameters-data-source-ssh-unsupported-parms"></a>

Anda tidak dapat menggunakan parameter berikut dengan COPY dari SSH: 
+ DIENKRIPSI
+ NYATA
+ RASIO BACA

# SALIN dari Amazon DynamoDB
<a name="copy-parameters-data-source-dynamodb"></a>

Untuk memuat data dari tabel DynamoDB yang ada, gunakan klausa FROM untuk menentukan nama tabel DynamoDB.

**Topics**
+ [Sintaksis](#copy-parameters-data-source-dynamodb-syntax)
+ [Contoh](#copy-parameters-data-source-dynamodb-examples)
+ [Parameter opsional](#copy-parameters-data-source-dynamodb-optional-parms)
+ [Parameter yang tidak didukung](#copy-parameters-data-source-dynamodb-unsupported-parms)

**penting**  
Jika tabel DynamoDB tidak berada di wilayah yang sama dengan kluster Amazon Redshift, Anda harus menggunakan parameter REGION untuk menentukan wilayah tempat data berada. 

## Sintaksis
<a name="copy-parameters-data-source-dynamodb-syntax"></a>

```
FROM 'dynamodb://table-name' 
authorization
READRATIO ratio
| REGION [AS] 'aws_region'  
| optional-parameters
```

## Contoh
<a name="copy-parameters-data-source-dynamodb-examples"></a>

Contoh berikut memuat data dari tabel DynamoDB. 

```
copy favoritemovies from 'dynamodb://ProductCatalog'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
readratio 50;
```

### Parameter
<a name="copy-parameters-data-source-dynamodb-parameters"></a>

FROM  
Sumber data yang akan dimuat. 

*'dynamodb://nama-tabel '*  <a name="copy-dynamodb"></a>
Nama tabel DynamoDB yang berisi data, misalnya. `'dynamodb://ProductCatalog'` Untuk detail tentang cara atribut DynamoDB dipetakan ke kolom Amazon Redshift, lihat. [Memuat data dari tabel Amazon DynamoDB](t_Loading-data-from-dynamodb.md)  
Nama tabel DynamoDB unik untuk akun, AWS yang diidentifikasi oleh AWS kredenal akses.

*otorisasi*  
Perintah COPY memerlukan otorisasi untuk mengakses data di AWS sumber daya lain, termasuk di Amazon S3, Amazon EMR, DynamoDB, dan Amazon EC2. Anda dapat memberikan otorisasi tersebut dengan mereferensikan peran AWS Identity and Access Management (IAM) yang dilampirkan ke klaster Anda (kontrol akses berbasis peran) atau dengan memberikan kredenal akses untuk pengguna (kontrol akses berbasis kunci). Untuk meningkatkan keamanan dan fleksibilitas, sebaiknya gunakan kontrol akses berbasis peran IAM. Untuk informasi selengkapnya, lihat [Parameter otorisasi](copy-parameters-authorization.md).

*Rasio READRATIO [AS]*  <a name="copy-readratio"></a>
Persentase throughput disediakan tabel DynamoDB untuk digunakan untuk pemuatan data. READRATIO diperlukan untuk COPY dari DynamoDB. Itu tidak dapat digunakan dengan COPY dari Amazon S3. Kami sangat menyarankan untuk menyetel rasio ke nilai yang kurang dari rata-rata throughput yang tidak digunakan. Nilai yang valid adalah bilangan bulat 1-200.  
Menyetel READRATIO ke 100 atau lebih tinggi memungkinkan Amazon Redshift menggunakan keseluruhan throughput yang disediakan tabel DynamoDB, yang secara serius menurunkan kinerja operasi baca bersamaan terhadap tabel yang sama selama sesi COPY. Lalu lintas tulis tidak terpengaruh. Nilai yang lebih tinggi dari 100 diizinkan untuk memecahkan masalah skenario langka saat Amazon Redshift gagal memenuhi throughput tabel yang disediakan. Jika Anda memuat data dari DynamoDB ke Amazon Redshift secara berkelanjutan, pertimbangkan untuk mengatur tabel DynamoDB Anda sebagai rangkaian waktu untuk memisahkan lalu lintas langsung dari operasi COPY.

## Parameter opsional
<a name="copy-parameters-data-source-dynamodb-optional-parms"></a>

Anda dapat secara opsional menentukan parameter berikut dengan COPY dari Amazon DynamoDB: 
+ [Opsi pemetaan kolom](copy-parameters-column-mapping.md)
+ Parameter konversi data berikut didukung:
  + [ACCEPTANYDATE](copy-parameters-data-conversion.md#copy-acceptanydate) 
  + [BLANKSASNULL](copy-parameters-data-conversion.md#copy-blanksasnull) 
  + [DATEFORMAT](copy-parameters-data-conversion.md#copy-dateformat) 
  + [EMPTYASNULL](copy-parameters-data-conversion.md#copy-emptyasnull) 
  + [ROUNDEC](copy-parameters-data-conversion.md#copy-roundec) 
  + [TIMEFORMAT](copy-parameters-data-conversion.md#copy-timeformat) 
  + [TRIMBLANKS](copy-parameters-data-conversion.md#copy-trimblanks) 
  + [TRUNCATECOLUMNS](copy-parameters-data-conversion.md#copy-truncatecolumns) 
+ [Operasi pemuatan data](copy-parameters-data-load.md)

## Parameter yang tidak didukung
<a name="copy-parameters-data-source-dynamodb-unsupported-parms"></a>

Anda tidak dapat menggunakan parameter berikut dengan COPY dari DynamoDB: 
+ Semua parameter format data
+ MELARIKAN DIRI
+ FILLRECORD
+ IGNOREBLANKLINES
+ IGNOREHEADER
+ NULL
+ HAPUSQUOTES
+ TERIMA INVCHARS
+ NYATA
+ DIENKRIPSI

# Parameter otorisasi
<a name="copy-parameters-authorization"></a>

Perintah COPY memerlukan otorisasi untuk mengakses data di AWS sumber daya lain, termasuk di Amazon S3, Amazon EMR, Amazon DynamoDB, dan Amazon EC2. Anda dapat memberikan otorisasi tersebut dengan mereferensikan [peran AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) yang dilampirkan ke klaster Anda (kontrol akses berbasis *peran*). Anda dapat mengenkripsi data pemuatan Anda di Amazon S3. 

Topik berikut memberikan rincian lebih lanjut dan contoh opsi otentikasi:
+ [Izin IAM untuk COPY, UNLOAD, dan CREATE LIBRARY](copy-usage_notes-access-permissions.md#copy-usage_notes-iam-permissions)
+ [Kontrol akses berbasis peran](copy-usage_notes-access-permissions.md#copy-usage_notes-access-role-based)
+ [Kontrol akses berbasis kunci](copy-usage_notes-access-permissions.md#copy-usage_notes-access-key-based)

Gunakan salah satu dari berikut ini untuk memberikan otorisasi untuk perintah COPY: 
+ [Menggunakan parameter IAM\$1ROLE](#copy-iam-role)parameter
+ Parameter [Menggunakan parameter ACCESS\$1KEY\$1ID dan SECRET\$1ACCESS\$1KEY](#copy-access-key-id)
+ Klausa [Menggunakan parameter CREDENTIALS](#copy-credentials)

## Menggunakan parameter IAM\$1ROLE
<a name="copy-iam-role"></a>

### IAM\$1ROLE
<a name="copy-iam-role-iam"></a>

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

Gunakan Amazon Resource Name (ARN) untuk peran IAM yang digunakan klaster Anda untuk autentikasi dan otorisasi. Jika Anda menentukan IAM\$1ROLE, Anda tidak dapat menggunakan ACCESS\$1KEY\$1ID dan SECRET\$1ACCESS\$1KEY, SESSION\$1TOKEN, atau CREDENTIALS.

Berikut ini menunjukkan sintaks untuk parameter IAM\$1ROLE. 

```
IAM_ROLE { default | 'arn:aws:iam::<Akun AWS-id>:role/<role-name>' }
```

Untuk informasi selengkapnya, lihat [Kontrol akses berbasis peran](copy-usage_notes-access-permissions.md#copy-usage_notes-access-role-based). 

## Menggunakan parameter ACCESS\$1KEY\$1ID dan SECRET\$1ACCESS\$1KEY
<a name="copy-access-key-id"></a>

### ACCESS\$1KEY\$1ID, SECRET\$1ACCESS\$1KEY
<a name="copy-access-key-id-access"></a>

Metode otorisasi ini tidak disarankan. 

**catatan**  
Alih-alih memberikan kredensi akses sebagai teks biasa, kami sangat menyarankan menggunakan otentikasi berbasis peran dengan menentukan parameter IAM\$1ROLE. Untuk informasi selengkapnya, lihat [Kontrol akses berbasis peran](copy-usage_notes-access-permissions.md#copy-usage_notes-access-role-based). 

### SESSION\$1TOKEN
<a name="copy-token"></a>

Token sesi untuk digunakan dengan kredensil akses sementara. Ketika SESSION\$1TOKEN ditentukan, Anda juga harus menggunakan ACCESS\$1KEY\$1ID dan SECRET\$1ACCESS\$1KEY untuk memberikan kredensyal kunci akses sementara. Jika Anda menentukan SESSION\$1TOKEN, Anda tidak dapat menggunakan IAM\$1ROLE atau CREDENTIALS. Untuk informasi selengkapnya, lihat [Kredensial keamanan sementara](copy-usage_notes-access-permissions.md#r_copy-temporary-security-credentials) di Panduan Pengguna IAM.

**catatan**  
Alih-alih membuat kredensil keamanan sementara, kami sangat menyarankan untuk menggunakan otentikasi berbasis peran. Saat Anda mengotorisasi penggunaan peran IAM, Amazon Redshift secara otomatis membuat kredensil pengguna sementara untuk setiap sesi. Untuk informasi selengkapnya, lihat [Kontrol akses berbasis peran](copy-usage_notes-access-permissions.md#copy-usage_notes-access-role-based). 

Berikut ini menunjukkan sintaks untuk parameter SESSION\$1TOKEN dengan parameter ACCESS\$1KEY\$1ID dan SECRET\$1ACCESS\$1KEY. 

```
ACCESS_KEY_ID '<access-key-id>'
SECRET_ACCESS_KEY '<secret-access-key>'
SESSION_TOKEN '<temporary-token>';
```

Jika Anda menentukan SESSION\$1TOKEN, Anda tidak dapat menggunakan CREDENTIALS atau IAM\$1ROLE. 

## Menggunakan parameter CREDENTIALS
<a name="copy-credentials"></a>

### KREDENSIAL
<a name="copy-credentials-cred"></a>

Klausa yang menunjukkan metode yang akan digunakan cluster Anda saat mengakses AWS sumber daya lain yang berisi file data atau file manifes. Anda tidak dapat menggunakan parameter CREDENTIALS dengan IAM\$1ROLE atau ACCESS\$1KEY\$1ID dan SECRET\$1ACCESS\$1KEY.

Berikut ini menunjukkan sintaks untuk parameter CREDENTIALS.

```
[WITH] CREDENTIALS [AS] 'credentials-args'
```

**catatan**  
Untuk meningkatkan fleksibilitas, sebaiknya gunakan [IAM\$1ROLE](#copy-iam-role-iam) parameter alih-alih parameter CREDENTIALS.

Secara opsional, jika [ENCRYPTED](copy-parameters-data-source-s3.md#copy-encrypted) parameter digunakan, string *credentials-args* juga menyediakan kunci enkripsi.

String *credentials-args* bersifat case-sensitive dan tidak boleh berisi spasi.

Kata kunci WITH dan AS bersifat opsional dan diabaikan.

Anda dapat menentukan [role-based access control](copy-usage_notes-access-permissions.md#copy-usage_notes-access-role-based.phrase) atau [key-based access control](copy-usage_notes-access-permissions.md#copy-usage_notes-access-key-based.phrase). Dalam kedua kasus, peran IAM atau pengguna harus memiliki izin yang diperlukan untuk mengakses sumber daya yang ditentukan AWS . Untuk informasi selengkapnya, lihat [Izin IAM untuk COPY, UNLOAD, dan CREATE LIBRARY](copy-usage_notes-access-permissions.md#copy-usage_notes-iam-permissions). 

**catatan**  
Untuk melindungi AWS kredensyal Anda dan melindungi data sensitif, kami sangat menyarankan untuk menggunakan kontrol akses berbasis peran. 

Untuk menentukan kontrol akses berbasis peran, berikan string *credentials-args* dalam format berikut.

```
'aws_iam_role=arn:aws:iam::<aws-account-id>:role/<role-name>'
```

Untuk menggunakan kredensil token sementara, Anda harus memberikan ID kunci akses sementara, kunci akses rahasia sementara, dan token sementara. String *credentials-args* dalam format berikut. 

```
CREDENTIALS
'aws_access_key_id=<temporary-access-key-id>;aws_secret_access_key=<temporary-secret-access-key>;token=<temporary-token>'
```

Perintah COPY menggunakan kontrol akses berbasis peran dengan kredensi sementara akan menyerupai pernyataan contoh berikut: 

```
COPY customer FROM 's3://amzn-s3-demo-bucket/mydata' 
CREDENTIALS
'aws_access_key_id=<temporary-access-key-id>;aws_secret_access_key=<temporary-secret-access-key-id>;token=<temporary-token>'
```

 Untuk informasi selengkapnya, lihat [Kredensial keamanan sementara](copy-usage_notes-access-permissions.md#r_copy-temporary-security-credentials).

Jika [ENCRYPTED](copy-parameters-data-source-s3.md#copy-encrypted) parameter digunakan, string *credentials-args* dalam format berikut, di mana *<root-key>* nilai kunci root yang digunakan untuk mengenkripsi file.

```
CREDENTIALS
'<credentials-args>;master_symmetric_key=<root-key>'
```

Perintah COPY menggunakan kontrol akses berbasis peran dengan kunci enkripsi akan menyerupai pernyataan contoh berikut:

```
COPY customer FROM 's3://amzn-s3-demo-bucket/mydata' 
CREDENTIALS 
'aws_iam_role=arn:aws:iam::<account-id>:role/<role-name>;master_symmetric_key=<root-key>'
```

# Opsi pemetaan kolom
<a name="copy-parameters-column-mapping"></a>

Secara default, COPY menyisipkan nilai ke kolom tabel target dalam urutan yang sama seperti bidang yang terjadi dalam file data. Jika urutan kolom default tidak akan berfungsi, Anda dapat menentukan daftar kolom atau menggunakan JSONPath ekspresi untuk memetakan bidang data sumber ke kolom target. 
+ [Column List](#copy-column-list)
+ [JSONPaths File](#copy-column-mapping-jsonpaths)

## Daftar kolom
<a name="copy-column-list"></a>

Anda dapat menentukan daftar nama kolom yang dipisahkan koma untuk memuat bidang data sumber ke kolom target tertentu. Kolom dapat dalam urutan apa pun dalam pernyataan COPY, tetapi saat memuat dari file datar, seperti di bucket Amazon S3, urutannya harus sesuai dengan urutan data sumber. 

Saat memuat dari tabel Amazon DynamoDB, pesanan tidak masalah. Perintah COPY cocok dengan nama atribut dalam item yang diambil dari tabel DynamoDB ke nama kolom di tabel Amazon Redshift. Untuk informasi selengkapnya, lihat [Memuat data dari tabel Amazon DynamoDB](t_Loading-data-from-dynamodb.md)

 Format untuk daftar kolom adalah sebagai berikut.

```
COPY tablename (column1 [,column2, ...]) 
```

Jika kolom dalam tabel target dihilangkan dari daftar kolom, maka COPY memuat ekspresi kolom target[DEFAULT](r_CREATE_TABLE_NEW.md#create-table-default).

Jika kolom target tidak memiliki default, COPY mencoba memuat NULL.

Jika COPY mencoba untuk menetapkan NULL ke kolom yang didefinisikan sebagai NOT NULL, perintah COPY gagal. 

Jika [IDENTITY](r_CREATE_TABLE_NEW.md#identity-clause) kolom disertakan dalam daftar kolom, maka [EXPLICIT_IDS](copy-parameters-data-conversion.md#copy-explicit-ids) harus juga ditentukan; jika kolom IDENTITY dihilangkan, maka EXPLICIT\$1IDS tidak dapat ditentukan. Jika tidak ada daftar kolom yang ditentukan, perintah berperilaku seolah-olah daftar kolom lengkap dalam urutan ditentukan, dengan kolom IDENTITY dihilangkan jika EXPLICIT\$1IDS juga tidak ditentukan.

Jika kolom didefinisikan dengan GENERATED BY DEFAULT AS IDENTITY, maka itu dapat disalin. Nilai dihasilkan atau diperbarui dengan nilai yang Anda berikan. Opsi EXPLICIT\$1IDS tidak diperlukan. COPY tidak memperbarui tanda air identitas tinggi. Untuk informasi selengkapnya, lihat [GENERATED BY DEFAULT AS IDENTITY](r_CREATE_TABLE_NEW.md#identity-generated-bydefault-clause). 

## JSONPaths berkas
<a name="copy-column-mapping-jsonpaths"></a>

Saat memuat dari file data dalam format JSON atau Avro, COPY secara otomatis memetakan elemen data dalam data sumber JSON atau Avro ke kolom di tabel target. Ia melakukannya dengan mencocokkan nama bidang dalam skema Avro dengan nama kolom di tabel target atau daftar kolom.

Dalam beberapa kasus, nama kolom dan nama bidang Anda tidak cocok, atau Anda perlu memetakan ke tingkat yang lebih dalam dalam hierarki data. Dalam kasus ini, Anda dapat menggunakan JSONPaths file untuk secara eksplisit memetakan elemen data JSON atau Avro ke kolom. 

Untuk informasi selengkapnya, lihat [JSONPaths berkas](copy-parameters-data-format.md#copy-json-jsonpaths). 

# Parameter format data
<a name="copy-parameters-data-format"></a>

Secara default, perintah COPY mengharapkan data sumber menjadi teks UTF-8 yang dibatasi karakter. Pembatas default adalah karakter pipa (\$1). Jika data sumber dalam format lain, gunakan parameter berikut untuk menentukan format data: 
+ [FORMAT](#copy-format)
+ [CSV](#copy-csv)
+ [DELIMITER](#copy-delimiter) 
+ [FIXEDWIDTH](#copy-fixedwidth) 
+ [SHAPEFILE](#copy-shapefile) 
+ [AVRO](#copy-avro) 
+ [JSON format for COPY](#copy-json) 
+ [PARQUET](#copy-parquet) 
+ [ORC](#copy-orc) 

Selain format data standar, COPY mendukung format data kolumnar berikut untuk COPY dari Amazon S3: 
+ [ORC](#copy-orc) 
+ [PARQUET](#copy-parquet) 

COPY dari format kolumnar didukung dengan batasan tertentu. Untuk informasi selengkapnya, lihat [COPY dari format data kolumnar](copy-usage_notes-copy-from-columnar.md). <a name="copy-data-format-parameters"></a>Parameter format data

FORMAT [SEBAGAI]  <a name="copy-format"></a>
(Opsional) Mengidentifikasi kata kunci format data. Argumen FORMAT dijelaskan sebagai berikut.

CSV [KUTIPAN [AS] *'quote\$1character'*]  <a name="copy-csv"></a>
Memungkinkan penggunaan format CSV dalam data input. Untuk secara otomatis menghindari pembatas, karakter baris baru, dan pengembalian carriage, lampirkan bidang dalam karakter yang ditentukan oleh parameter QUOTE. Karakter tanda kutip default adalah tanda kutip ganda ("). Ketika karakter tanda kutip digunakan dalam bidang, keluar dari karakter dengan karakter tanda kutip tambahan. Misalnya, jika karakter tanda kutip adalah tanda kutip ganda, untuk memasukkan string `A "quoted" word` file input harus menyertakan string. `"A ""quoted"" word"` Ketika parameter CSV digunakan, pembatas default adalah koma (,). Anda dapat menentukan pembatas yang berbeda dengan menggunakan parameter DELIMITER.   
Ketika bidang diapit tanda kutip, spasi putih antara pembatas dan karakter tanda kutip diabaikan. Jika pembatas adalah karakter spasi putih, seperti tab, pembatas tidak diperlakukan sebagai spasi putih.  
CSV tidak dapat digunakan dengan FIXEDWIDTH, REMOVEQUOTES, atau ESCAPE.     
KUTIPAN [AS] *'quote\$1character'*  <a name="copy-csv-quote"></a>
Tidak wajib. Menentukan karakter yang akan digunakan sebagai karakter tanda kutip saat menggunakan parameter CSV. Defaultnya adalah tanda kutip ganda ("). Jika Anda menggunakan parameter QUOTE untuk menentukan karakter tanda kutip selain tanda kutip ganda, Anda tidak perlu melepaskan tanda kutip ganda di dalam bidang. Parameter QUOTE hanya dapat digunakan dengan parameter CSV. Kata kunci AS adalah opsional.

PEMBATAS [AS] ['*delimiter\$1char*']   <a name="copy-delimiter"></a>
Menentukan karakter yang digunakan untuk memisahkan bidang dalam file input, seperti karakter pipa (`|`), koma (`,`), tab (`\t`), atau beberapa karakter seperti. `|~|` Karakter yang tidak dapat dicetak didukung. Karakter juga dapat direpresentasikan dalam oktal sebagai unit kode UTF-8 mereka. Untuk oktal, gunakan format '\$1 ddd', di mana' d 'adalah digit oktal (0-7). Pembatas default adalah karakter pipa (`|`), kecuali parameter CSV digunakan, dalam hal ini pembatas default adalah koma (). `,` Kata kunci AS adalah opsional. DELIMITER tidak dapat digunakan dengan FIXEDWIDTH.

*FIXEDWIDTH 'fixedwidth\$1spec'*   <a name="copy-fixedwidth"></a>
Memuat data dari file di mana setiap lebar kolom adalah panjang tetap, bukan kolom yang dipisahkan oleh pembatas. *Fixedwidth\$1spec* adalah string yang menentukan label kolom yang ditentukan pengguna dan lebar kolom. Label kolom dapat berupa string teks atau bilangan bulat, tergantung pada apa yang dipilih pengguna. Label kolom tidak memiliki hubungan dengan nama kolom. Urutan label/width pasangan harus sesuai dengan urutan kolom tabel dengan tepat. FIXEDWIDTH tidak dapat digunakan dengan CSV atau DELIMITER. Di Amazon Redshift, panjang kolom CHAR dan VARCHAR dinyatakan dalam byte, jadi pastikan bahwa lebar kolom yang Anda tentukan mengakomodasi panjang biner karakter multibyte saat menyiapkan file yang akan dimuat. Untuk informasi selengkapnya, lihat [Jenis karakter](r_Character_types.md).   
Format untuk *fixedwidth\$1spec* ditampilkan sebagai berikut:   

```
'colLabel1:colWidth1,colLabel:colWidth2, ...'
```

SHAPEFILE [MENYEDERHANAKAN [AUTO] [*'toleransi'*]]  <a name="copy-shapefile"></a>
Mengaktifkan penggunaan format SHAPEFILE dalam data input. Secara default, kolom pertama dari shapefile adalah kolom `GEOMETRY` atau`IDENTITY`. Semua kolom berikutnya mengikuti urutan yang ditentukan dalam shapefile.  
Anda tidak dapat menggunakan SHAPEFILE dengan FIXEDWIDTH, REMOVEQUOTES, atau ESCAPE.   
Untuk menggunakan `GEOGRAPHY` objek dengan`COPY FROM SHAPEFILE`, pertama menelan ke dalam `GEOMETRY` kolom, dan kemudian melemparkan objek ke `GEOGRAPHY` objek.    
MENYEDERHANAKAN [*toleransi*]  <a name="copy-shapefile-simplify"></a>
(Opsional) Menyederhanakan semua geometri selama proses konsumsi menggunakan Ramer-Douglas-Peucker algoritma dan toleransi yang diberikan.   
MENYEDERHANAKAN AUTO [*toleransi*]  <a name="copy-shapefile-simplify"></a>
(Opsional) Menyederhanakan hanya geometri yang lebih besar dari ukuran geometri maksimum. Penyederhanaan ini menggunakan Ramer-Douglas-Peucker algoritma dan toleransi yang dihitung secara otomatis jika ini tidak melebihi toleransi yang ditentukan. Algoritma ini menghitung ukuran untuk menyimpan objek dalam toleransi yang ditentukan. Nilai *toleransi* adalah opsional.
Untuk contoh memuat shapefile, lihat. [Memuat shapefile ke Amazon Redshift](r_COPY_command_examples.md#copy-example-spatial-copy-shapefile)

AVRO [AS] '*avro\$1option*'  <a name="copy-avro"></a>
Menentukan bahwa data sumber dalam format Avro.   
Format Avro didukung untuk COPY dari layanan dan protokol ini:  
+ Amazon S3 
+ Amazon EMR 
+ Host jarak jauh (SSH) 
Avro tidak didukung untuk COPY dari DynamoDB.   
Avro adalah protokol serialisasi data. File sumber Avro menyertakan skema yang mendefinisikan struktur data. Jenis skema Avro harus. `record` COPY menerima file Avro yang dibuat menggunakan codec default yang tidak terkompresi serta codec kompresi dan. `deflate` `snappy` Untuk informasi lebih lanjut tentang Avro, buka [Apache](https://avro.apache.org/) Avro.   
Nilai yang valid untuk *avro\$1option* adalah sebagai berikut:  
+ `'auto'`
+ `'auto ignorecase'`
+ `'s3://jsonpaths_file'` 
Nilai default-nya `'auto'`.  
COPY secara otomatis memetakan elemen data dalam data sumber Avro ke kolom di tabel target. Ia melakukannya dengan mencocokkan nama bidang dalam skema Avro dengan nama kolom di tabel target. Pencocokan peka huruf besar/kecil untuk `'auto'` dan tidak peka huruf besar/kecil untuk. `'auto ignorecase'`   
Nama kolom di tabel Amazon Redshift selalu huruf kecil, jadi saat Anda menggunakan `'auto'` opsi, nama bidang yang cocok juga harus huruf kecil. Jika nama bidang tidak semuanya huruf kecil, Anda dapat menggunakan opsi. `'auto ignorecase'` Dengan `'auto'` argumen default, COPY hanya mengenali bidang tingkat pertama, atau *bidang luar*, dalam struktur.   
Untuk secara eksplisit memetakan nama kolom ke nama bidang Avro, Anda dapat menggunakan. [JSONPaths berkas](#copy-json-jsonpaths)   
Secara default, COPY mencoba untuk mencocokkan semua kolom dalam tabel target dengan nama bidang Avro. Untuk memuat subset kolom, Anda dapat menentukan daftar kolom secara opsional. Jika kolom dalam tabel target dihilangkan dari daftar kolom, COPY memuat ekspresi kolom target[DEFAULT](r_CREATE_TABLE_NEW.md#create-table-default). Jika kolom target tidak memiliki default, COPY mencoba memuat NULL. Jika kolom disertakan dalam daftar kolom dan COPY tidak menemukan bidang yang cocok dalam data Avro, COPY mencoba memuat NULL ke kolom.   
Jika COPY mencoba untuk menetapkan NULL ke kolom yang didefinisikan sebagai NOT NULL, perintah COPY gagal.   
<a name="copy-avro-schema"></a>**Avro Skema**  
File data sumber Avro mencakup skema yang mendefinisikan struktur data. COPY membaca skema yang merupakan bagian dari file data sumber Avro untuk memetakan elemen data ke kolom tabel target. Contoh berikut menunjukkan skema Avro.   

```
{
    "name": "person",
    "type": "record",
    "fields": [
        {"name": "id", "type": "int"},
        {"name": "guid", "type": "string"},
        {"name": "name", "type": "string"},
        {"name": "address", "type": "string"}]
}
```
Skema Avro didefinisikan menggunakan format JSON. Objek JSON tingkat atas berisi tiga pasangan nama-nilai dengan nama, atau *kunci*,,, dan. `"name"` `"type"` `"fields"`   
Pasangan `"fields"` kunci dengan array objek yang menentukan nama dan tipe data dari setiap bidang dalam struktur data. Secara default, COPY secara otomatis mencocokkan nama bidang dengan nama kolom. Nama kolom selalu huruf kecil, jadi nama bidang yang cocok juga harus huruf kecil, kecuali jika Anda menentukan opsi. `‘auto ignorecase’` Nama bidang apa pun yang tidak cocok dengan nama kolom akan diabaikan. Pesanan tidak masalah. Pada contoh sebelumnya, COPY memetakan ke nama kolom`id`,`guid`,`name`, dan`address`.   
Dengan `'auto'` argumen default, COPY hanya mencocokkan objek tingkat pertama dengan kolom. Untuk memetakan ke tingkat yang lebih dalam dalam skema, atau jika nama bidang dan nama kolom tidak cocok, gunakan JSONPaths file untuk menentukan pemetaan. Untuk informasi selengkapnya, lihat [JSONPaths berkas](#copy-json-jsonpaths).   
Jika nilai yang terkait dengan kunci adalah tipe data Avro yang kompleks seperti byte, array, record, map, atau link, COPY memuat nilai sebagai string. Di sini, string adalah representasi JSON dari data. COPY memuat tipe data Avro enum sebagai string, di mana konten adalah nama tipe. Sebagai contoh, lihat [COPY dari format JSON](copy-usage_notes-copy-from-json.md).  
Ukuran maksimum header file Avro, yang mencakup skema dan metadata file, adalah 1 MB.     
Ukuran maksimum satu blok data Avro adalah 4 MB. Ini berbeda dari ukuran baris maksimum. Jika ukuran maksimum satu blok data Avro terlampaui, bahkan jika ukuran baris yang dihasilkan kurang dari batas ukuran baris 4 MB, perintah COPY gagal.   
Dalam menghitung ukuran baris, Amazon Redshift secara internal menghitung karakter pipa (\$1) dua kali. Jika data input Anda berisi sejumlah besar karakter pipa, dimungkinkan untuk ukuran baris melebihi 4 MB bahkan jika blok data kurang dari 4 MB.

JSON [AS] '*json\$1option*'  <a name="copy-json"></a>
Sumber data dalam format JSON.   
Format JSON didukung untuk COPY dari layanan dan protokol ini:  
+ Amazon S3
+ SALIN dari Amazon EMR
+ COPY dari SSH
JSON tidak didukung untuk COPY dari DynamoDB.   
Nilai yang valid untuk *json\$1option* adalah sebagai berikut:  
+ `'auto'`
+ `'auto ignorecase'`
+ `'s3://jsonpaths_file'` 
+ `'noshred'` 
Nilai default-nya `'auto'`. Amazon Redshift tidak merusak atribut struktur JSON menjadi beberapa kolom saat memuat dokumen JSON.  
Secara default, COPY mencoba untuk mencocokkan semua kolom dalam tabel target dengan kunci nama bidang JSON. Untuk memuat subset kolom, Anda dapat menentukan daftar kolom secara opsional. Jika kunci nama bidang JSON tidak semuanya huruf kecil, Anda dapat menggunakan `'auto ignorecase'` opsi atau untuk secara eksplisit [JSONPaths berkas](#copy-json-jsonpaths) memetakan nama kolom ke kunci nama bidang JSON.  
Jika kolom dalam tabel target dihilangkan dari daftar kolom, maka COPY memuat ekspresi kolom target[DEFAULT](r_CREATE_TABLE_NEW.md#create-table-default). Jika kolom target tidak memiliki default, COPY mencoba memuat NULL. Jika kolom disertakan dalam daftar kolom dan COPY tidak menemukan bidang yang cocok dalam data JSON, COPY mencoba memuat NULL ke kolom.   
Jika COPY mencoba untuk menetapkan NULL ke kolom yang didefinisikan sebagai NOT NULL, perintah COPY gagal.   
COPY memetakan elemen data dalam data sumber JSON ke kolom di tabel target. Ia melakukannya dengan mencocokkan *kunci objek*, atau nama, dalam pasangan nama-nilai sumber dengan nama kolom dalam tabel target.   
Lihat detail berikut tentang setiap nilai *json\$1option*:    
'otomatis'  <a name="copy-json-auto"></a>
Dengan opsi ini, pencocokan peka huruf besar/kecil. Nama kolom di tabel Amazon Redshift selalu huruf kecil, jadi saat Anda menggunakan `'auto'` opsi, nama bidang JSON yang cocok juga harus huruf kecil.  
'abaikan otomatis'  <a name="copy-json-auto-ignorecase"></a>
Dengan opsi ini, pencocokan tidak peka huruf besar/kecil. Nama kolom di tabel Amazon Redshift selalu huruf kecil, jadi saat Anda menggunakan `'auto ignorecase'` opsi, nama bidang JSON yang sesuai dapat berupa huruf kecil, huruf besar, atau huruf campuran.   
*'s3://jsonpaths\$1file '*  <a name="copy-json-pathfile"></a>
Dengan opsi ini, COPY menggunakan JSONPaths file bernama untuk memetakan elemen data dalam data sumber JSON ke kolom di tabel target. *`s3://jsonpaths_file`*Argumen harus berupa kunci objek Amazon S3 yang secara eksplisit mereferensikan satu file. Contohnya adalah `'s3://amzn-s3-demo-bucket/jsonpaths.txt` '. Argumen tidak bisa menjadi key prefix. Untuk informasi selengkapnya tentang menggunakan JSONPaths file, lihat[JSONPaths berkas](#copy-json-jsonpaths).  
Dalam beberapa kasus, file yang ditentukan oleh `jsonpaths_file` memiliki awalan yang sama dengan jalur yang ditentukan oleh `copy_from_s3_objectpath` untuk file data. Jika demikian, COPY membaca JSONPaths file sebagai file data dan mengembalikan kesalahan. Misalnya, misalkan file data Anda menggunakan path objek `s3://amzn-s3-demo-bucket/my_data.json` dan JSONPaths file Anda`s3://amzn-s3-demo-bucket/my_data.jsonpaths`. Dalam hal ini, COPY mencoba memuat `my_data.jsonpaths` sebagai file data.  
'hidung'  <a name="copy-json-noshred"></a>
Dengan opsi ini, Amazon Redshift tidak merusak atribut struktur JSON menjadi beberapa kolom saat memuat dokumen JSON.

## Berkas data JSON
<a name="copy-json-data-file"></a>

File data JSON berisi satu set objek atau array. COPY memuat setiap objek JSON atau array ke dalam satu baris dalam tabel target. Setiap objek atau array yang sesuai dengan baris harus merupakan struktur tingkat akar yang berdiri sendiri; artinya, ia tidak boleh menjadi anggota struktur JSON lain.

*Objek* JSON dimulai dan diakhiri dengan tanda kurung kurung (\$1\$1) dan berisi kumpulan pasangan nama-nilai yang tidak berurutan. Setiap nama dan nilai yang dipasangkan dipisahkan oleh titik dua, dan pasangan dipisahkan dengan koma. Secara default, *kunci objek*, atau nama, dalam pasangan nama-nilai harus cocok dengan nama kolom yang sesuai dalam tabel. Nama kolom di tabel Amazon Redshift selalu huruf kecil, jadi kunci nama bidang JSON yang cocok juga harus huruf kecil. Jika nama kolom dan kunci JSON Anda tidak cocok, gunakan a [JSONPaths berkas](#copy-json-jsonpaths) untuk secara eksplisit memetakan kolom ke kunci. 

Urutan dalam objek JSON tidak masalah. Nama apa pun yang tidak cocok dengan nama kolom diabaikan. Berikut ini menunjukkan struktur objek JSON sederhana.

```
{
  "column1": "value1",
  "column2": value2,
  "notacolumn" : "ignore this value"
}
```

*Array* JSON dimulai dan diakhiri dengan tanda kurung ([]), dan berisi kumpulan nilai yang diurutkan dipisahkan oleh koma. Jika file data Anda menggunakan array, Anda harus menentukan JSONPaths file untuk mencocokkan nilai ke kolom. Berikut ini menunjukkan struktur array JSON sederhana. 

```
["value1", value2]
```

JSON harus dibentuk dengan baik. Misalnya, objek atau array tidak dapat dipisahkan dengan koma atau karakter lain kecuali spasi putih. String harus dilampirkan dalam karakter tanda kutip ganda. Karakter kutipan harus berupa tanda kutip sederhana (0x22), bukan tanda kutip miring atau “pintar”.

Ukuran maksimum objek atau array JSON tunggal, termasuk kawat gigi atau tanda kurung, adalah 4 MB. Ini berbeda dari ukuran baris maksimum. Jika ukuran maksimum objek atau array JSON tunggal terlampaui, bahkan jika ukuran baris yang dihasilkan kurang dari batas ukuran baris 4 MB, perintah COPY gagal. 

Dalam menghitung ukuran baris, Amazon Redshift secara internal menghitung karakter pipa (\$1) dua kali. Jika data input Anda berisi sejumlah besar karakter pipa, dimungkinkan untuk ukuran baris melebihi 4 MB bahkan jika ukuran objek kurang dari 4 MB.

COPY dimuat `\n` sebagai karakter baris baru dan dimuat `\t` sebagai karakter tab. Untuk memuat garis miring terbalik, lepaskan dengan garis miring terbalik (). `\\`

COPY mencari sumber JSON yang ditentukan untuk objek atau array JSON yang terbentuk dengan baik dan valid. Jika COPY menemukan karakter non-spasi putih sebelum menemukan struktur JSON yang dapat digunakan, atau di antara objek atau array JSON yang valid, COPY mengembalikan kesalahan untuk setiap instance. Kesalahan ini dihitung dalam jumlah kesalahan MAXERROR. Ketika jumlah kesalahan sama atau melebihi MAXERROR, COPY gagal. 

Untuk setiap kesalahan, Amazon Redshift merekam baris dalam tabel sistem STL\$1LOAD\$1ERRORS. Kolom LINE\$1NUMBER mencatat baris terakhir dari objek JSON yang menyebabkan kesalahan. 

Jika IGNOREHEADER ditentukan, COPY mengabaikan jumlah baris yang ditentukan dalam data JSON. Karakter baris baru dalam data JSON selalu dihitung untuk perhitungan IGNOREHEADER. 

COPY memuat string kosong sebagai bidang kosong secara default. Jika EMTTYASNULL ditentukan, COPY memuat string kosong untuk bidang CHAR dan VARCHAR sebagai NULL. String kosong untuk tipe data lain, seperti INT, selalu dimuat dengan NULL. 

Opsi berikut tidak didukung dengan JSON: 
+ CSV
+ PEMBATAS 
+ MELARIKAN DIRI
+ FILLRECORD 
+ FIXEDWIDTH
+ IGNOREBLANKLINES
+ NULL SEBAGAI
+ RASIO BACA
+ HAPUSQUOTES 

Untuk informasi selengkapnya, lihat [COPY dari format JSON](copy-usage_notes-copy-from-json.md). Untuk informasi lebih lanjut tentang struktur data JSON, kunjungi [www.json.org](https://www.json.org/). 

## JSONPaths berkas
<a name="copy-json-jsonpaths"></a>

Jika Anda memuat dari data sumber berformat JSON atau Avro, secara default COPY memetakan elemen data tingkat pertama dalam data sumber ke kolom di tabel target. Ia melakukannya dengan mencocokkan setiap nama, atau kunci objek, dalam pasangan nama-nilai dengan nama kolom dalam tabel target. 

Jika nama kolom dan kunci objek Anda tidak cocok, atau untuk memetakan ke tingkat yang lebih dalam dalam hierarki data, Anda dapat menggunakan JSONPaths file untuk secara eksplisit memetakan elemen data JSON atau Avro ke kolom. JSONPaths File memetakan elemen data JSON ke kolom dengan mencocokkan urutan kolom dalam tabel target atau daftar kolom.

 JSONPaths File harus berisi hanya satu objek JSON (bukan array). Objek JSON adalah pasangan nama-nilai. *Kunci objek*, yang merupakan nama dalam pasangan nama-nilai, harus. `"jsonpaths"` *Nilai* *dalam pasangan nama-nilai adalah array ekspresi. JSONPath * Setiap JSONPath ekspresi mereferensikan satu elemen dalam hierarki data JSON atau skema Avro, mirip dengan bagaimana XPath ekspresi mengacu pada elemen dalam dokumen XHTML. Untuk informasi selengkapnya, lihat [JSONPath ekspresi](#copy-json-jsonpath-expressions).

Untuk menggunakan JSONPaths file, tambahkan kata kunci JSON atau AVRO ke perintah COPY. Tentukan nama bucket S3 dan path objek JSONPaths file menggunakan format berikut.

```
COPY tablename 
FROM 'data_source' 
CREDENTIALS 'credentials-args' 
FORMAT AS { AVRO | JSON } 's3://jsonpaths_file';
```

`s3://jsonpaths_file`Nilai harus berupa kunci objek Amazon S3 yang secara eksplisit mereferensikan satu file, seperti. `'s3://amzn-s3-demo-bucket/jsonpaths.txt'` Itu tidak bisa menjadi key prefix. 

Dalam beberapa kasus, jika Anda memuat dari Amazon S3, file yang ditentukan oleh `jsonpaths_file` memiliki awalan yang sama dengan jalur yang ditentukan oleh `copy_from_s3_objectpath` untuk file data. Jika demikian, COPY membaca JSONPaths file sebagai file data dan mengembalikan kesalahan. Misalnya, misalkan file data Anda menggunakan path objek `s3://amzn-s3-demo-bucket/my_data.json` dan JSONPaths file Anda`s3://amzn-s3-demo-bucket/my_data.jsonpaths`. Dalam hal ini, COPY mencoba memuat `my_data.jsonpaths` sebagai file data.

 Jika nama kunci adalah string selain`"jsonpaths"`, perintah COPY tidak mengembalikan kesalahan, tetapi mengabaikan *jsonpaths\$1file* dan menggunakan argumen sebagai gantinya. `'auto'` 

Jika salah satu hal berikut terjadi, perintah COPY gagal:
+ JSON cacat.
+ Ada lebih dari satu objek JSON.
+ Karakter apa pun kecuali ruang putih ada di luar objek.
+ Elemen array adalah string kosong atau bukan string.

MAXERROR tidak berlaku untuk JSONPaths file. 

 JSONPaths File tidak boleh dienkripsi, bahkan jika [ENCRYPTED](copy-parameters-data-source-s3.md#copy-encrypted) opsi ditentukan.

Untuk informasi selengkapnya, lihat [COPY dari format JSON](copy-usage_notes-copy-from-json.md). 

## JSONPath ekspresi
<a name="copy-json-jsonpath-expressions"></a>

 JSONPaths File menggunakan JSONPath ekspresi untuk memetakan bidang data ke kolom target. Setiap JSONPath ekspresi sesuai dengan satu kolom di tabel target Amazon Redshift. Urutan elemen JSONPath array harus sesuai dengan urutan kolom dalam tabel target atau daftar kolom, jika daftar kolom digunakan. 

Karakter tanda kutip ganda diperlukan seperti yang ditunjukkan, baik untuk nama bidang maupun nilainya. Karakter tanda kutip harus berupa tanda kutip sederhana (0x22), bukan tanda kutip miring atau “pintar”.

Jika elemen objek yang direferensikan oleh JSONPath ekspresi tidak ditemukan dalam data JSON, COPY mencoba memuat nilai NULL. Jika objek yang direferensikan cacat, COPY mengembalikan kesalahan pemuatan. 

Jika elemen array yang direferensikan oleh JSONPath ekspresi tidak ditemukan dalam data JSON atau Avro, COPY gagal dengan kesalahan berikut: `Invalid JSONPath format: Not an array or index out of range.` Hapus elemen array dari JSONPaths yang tidak ada dalam data sumber dan verifikasi bahwa array dalam data sumber terbentuk dengan baik.  

 JSONPath Ekspresi dapat menggunakan notasi braket atau notasi titik, tetapi Anda tidak dapat mencampur notasi. Contoh berikut menunjukkan JSONPath ekspresi menggunakan notasi braket. 

```
{
    "jsonpaths": [
        "$['venuename']",
        "$['venuecity']",
        "$['venuestate']",
        "$['venueseats']"
    ]
}
```

Contoh berikut menunjukkan JSONPath ekspresi menggunakan notasi titik. 

```
{
    "jsonpaths": [
        "$.venuename",
        "$.venuecity",
        "$.venuestate",
        "$.venueseats"
    ]
}
```

Dalam konteks sintaks Amazon Redshift COPY, JSONPath ekspresi harus menentukan jalur eksplisit ke elemen nama tunggal dalam struktur data hierarkis JSON atau Avro. Amazon Redshift tidak mendukung JSONPath elemen apa pun, seperti karakter wildcard atau ekspresi filter, yang mungkin diselesaikan ke jalur ambigu atau beberapa elemen nama.

Untuk informasi selengkapnya, lihat [COPY dari format JSON](copy-usage_notes-copy-from-json.md). 

## Menggunakan JSONPaths dengan Avro Data
<a name="using-jsonpath-with-avro"></a>

Contoh berikut menunjukkan skema Avro dengan beberapa level.

```
{
    "name": "person",
    "type": "record",
    "fields": [
        {"name": "id", "type": "int"},
        {"name": "guid", "type": "string"},
        {"name": "isActive", "type": "boolean"},
        {"name": "age", "type": "int"},
        {"name": "name", "type": "string"},
        {"name": "address", "type": "string"},
        {"name": "latitude", "type": "double"},
        {"name": "longitude", "type": "double"},
        {
            "name": "tags",
            "type": {
                        "type" : "array",
                        "name" : "inner_tags",
                        "items" : "string"
                    }
        },
        {
            "name": "friends",
            "type": {
                        "type" : "array",
                        "name" : "inner_friends",
                        "items" : {
                                    "name" : "friends_record",
                                    "type" : "record",
                                    "fields" : [
                                                 {"name" : "id", "type" : "int"},
                                                 {"name" : "name", "type" : "string"}
                                               ]
                                  }
                    }
        },
        {"name": "randomArrayItem", "type": "string"}
    ]
}
```

Contoh berikut menunjukkan JSONPaths file yang menggunakan AvroPath ekspresi untuk referensi skema sebelumnya. 

```
{
    "jsonpaths": [
        "$.id",
        "$.guid",
        "$.address",
        "$.friends[0].id"
    ]
}
```

 JSONPaths Contohnya meliputi elemen-elemen berikut:

jsonpath  
Nama objek JSON yang berisi AvroPath ekspresi.

[ … ]  
Tanda kurung melampirkan array JSON yang berisi elemen jalur.

\$1  
Tanda dolar mengacu pada elemen root dalam skema Avro, yang merupakan array. `"fields"`

“\$1.id”,  
Target AvroPath ekspresi. Dalam hal ini, target adalah elemen dalam `"fields"` array dengan nama`"id"`. Ekspresi dipisahkan oleh koma.

“\$1.friends [0] .id”  
Tanda kurung menunjukkan indeks array. JSONPath ekspresi menggunakan pengindeksan berbasis nol, jadi ekspresi ini mereferensikan elemen pertama dalam `"friends"` array dengan nama. `"id"`

Sintaks skema Avro membutuhkan penggunaan *bidang dalam* untuk menentukan struktur tipe data record dan array. Bidang dalam diabaikan oleh AvroPath ekspresi. Misalnya, bidang `"friends"` mendefinisikan array bernama`"inner_friends"`, yang pada gilirannya mendefinisikan catatan bernama. `"friends_record"` AvroPath Ekspresi untuk mereferensikan bidang `"id"` dapat mengabaikan bidang tambahan untuk mereferensikan bidang target secara langsung. AvroPath Ekspresi berikut mereferensikan dua bidang yang termasuk dalam `"friends"` array.

```
"$.friends[0].id"
"$.friends[0].name"
```

## Parameter format data kolumnar
<a name="copy-parameters-columnar-data"></a>

Selain format data standar, COPY mendukung format data kolumnar berikut untuk COPY dari Amazon S3. COPY dari format kolumnar didukung dengan batasan tertentu. Untuk informasi selengkapnya, lihat [COPY dari format data kolumnar](copy-usage_notes-copy-from-columnar.md). 

ORC  <a name="copy-orc"></a>
Memuat data dari file yang menggunakan format file Optimized Row Columnar (ORC). 

PARQUET  <a name="copy-parquet"></a>
Memuat data dari file yang menggunakan format file Parket. 

# Parameter kompresi file
<a name="copy-parameters-file-compression"></a>

Anda dapat memuat dari file data terkompresi dengan menentukan parameter berikut. Parameter kompresi file

BZIP2   <a name="copy-bzip2"></a>
Nilai yang menentukan bahwa file input atau file dalam format bzip2 terkompresi (file.bz2). Operasi COPY membaca setiap file terkompresi dan membuka kompres data saat dimuat.

GZIP   <a name="copy-gzip"></a>
Nilai yang menentukan bahwa file input atau file dalam format gzip terkompresi (file.gz). Operasi COPY membaca setiap file terkompresi dan membuka kompres data saat dimuat.

LZOP   <a name="copy-lzop"></a>
Nilai yang menentukan bahwa file input atau file dalam format lzop terkompresi (file.lzo). Operasi COPY membaca setiap file terkompresi dan membuka kompres data saat dimuat.  
*COPY tidak mendukung file yang dikompresi menggunakan opsi lzop --filter.*

ZSTD   <a name="copy-zstd"></a>
Nilai yang menentukan bahwa file input atau file dalam format Zstandard terkompresi (file.zst). Operasi COPY membaca setiap file terkompresi dan membuka kompres data saat dimuat.  
ZSTD hanya didukung dengan COPY dari Amazon S3.

# Parameter konversi data
<a name="copy-parameters-data-conversion"></a>

Saat memuat tabel, COPY mencoba untuk secara implisit mengonversi string dalam data sumber ke tipe data kolom target. Jika Anda perlu menentukan konversi yang berbeda dari perilaku default, atau jika konversi default menghasilkan kesalahan, Anda dapat mengelola konversi data dengan menentukan parameter berikut. Untuk informasi selengkapnya tentang sintaks parameter ini, lihat [sintaks COPY](https://docs.aws.amazon.com/redshift/latest/dg/r_COPY.html#r_COPY-syntax).
+ [ACCEPTANYDATE](#copy-acceptanydate) 
+ [ACCEPTINVCHARS](#copy-acceptinvchars) 
+ [BLANKSASNULL](#copy-blanksasnull) 
+ [DATEFORMAT](#copy-dateformat) 
+ [EMPTYASNULL](#copy-emptyasnull) 
+ [ENCODING](#copy-encoding) 
+ [ESCAPE](#copy-escape) 
+ [EXPLICIT_IDS](#copy-explicit-ids) 
+ [FILLRECORD](#copy-fillrecord) 
+ [IGNOREBLANKLINES](#copy-ignoreblanklines) 
+ [IGNOREHEADER](#copy-ignoreheader) 
+ [NULL AS](#copy-null-as) 
+ [REMOVEQUOTES](#copy-removequotes) 
+ [ROUNDEC](#copy-roundec) 
+ [TIMEFORMAT](#copy-timeformat) 
+ [TRIMBLANKS](#copy-trimblanks) 
+ [TRUNCATECOLUMNS](#copy-truncatecolumns) <a name="copy-data-conversion-parameters"></a>Parameter konversi data

ACCEPTANYDATE   <a name="copy-acceptanydate"></a>
Memungkinkan format tanggal apa pun, termasuk format yang tidak valid seperti`00/00/00 00:00:00`, dimuat tanpa menimbulkan kesalahan. Parameter ini hanya berlaku untuk kolom TIMESTAMP dan DATE. Selalu gunakan ACCEPTANYDATE dengan parameter DATEFORMAT. Jika format tanggal untuk data tidak cocok dengan spesifikasi DATEFORMAT, Amazon Redshift menyisipkan nilai NULL ke bidang tersebut.

*TERIMA INVCHARS [AS] ['replacement\$1char']*   <a name="copy-acceptinvchars"></a>
Memungkinkan pemuatan data ke kolom VARCHAR bahkan jika data berisi karakter UTF-8 yang tidak valid. *Ketika ACCEPTINVCHARS ditentukan, COPY menggantikan setiap karakter UTF-8 yang tidak valid dengan string dengan panjang yang sama yang terdiri dari karakter yang ditentukan oleh replacement\$1char.* Misalnya, jika karakter pengganti adalah '`^`', karakter tiga byte yang tidak valid akan diganti dengan ''. `^^^`  
 Karakter pengganti dapat berupa karakter ASCII kecuali NULL. Defaultnya adalah tanda tanya (? ). Untuk informasi tentang karakter UTF-8 yang tidak valid, lihat. [Kesalahan pemuatan karakter multibyte](multi-byte-character-load-errors.md)  
COPY mengembalikan jumlah baris yang berisi karakter UTF-8 yang tidak valid, dan menambahkan entri ke tabel [STL\$1REPLACEMENTS](r_STL_REPLACEMENTS.md) sistem untuk setiap baris yang terpengaruh, hingga maksimum 100 baris untuk setiap irisan node. Karakter UTF-8 tambahan yang tidak valid juga diganti, tetapi peristiwa pengganti tersebut tidak direkam.  
Jika ACCEPTINVCHARS tidak ditentukan, COPY mengembalikan kesalahan setiap kali menemukan karakter UTF-8 yang tidak valid.   
ACCEPTINVCHARS hanya berlaku untuk kolom VARCHAR.

BLANKSASNULL   <a name="copy-blanksasnull"></a>
Memuat bidang kosong, yang hanya terdiri dari karakter spasi putih, sebagai NULL. Opsi ini hanya berlaku untuk kolom CHAR dan VARCHAR. Bidang kosong untuk tipe data lain, seperti INT, selalu dimuat dengan NULL. Misalnya, string yang berisi tiga karakter spasi berturut-turut (dan tidak ada karakter lain) dimuat sebagai NULL. Perilaku default, tanpa opsi ini, adalah memuat karakter spasi apa adanya. 

DATEFORMAT [AS] \$1'*dateformat\$1string' \$1 'auto*'\$1  <a name="copy-dateformat"></a>
Jika tidak ada DATEFORMAT yang ditentukan, format defaultnya adalah. `'YYYY-MM-DD'` Misalnya, format alternatif yang valid adalah`'MM-DD-YYYY'`.   
Jika perintah COPY tidak mengenali format nilai tanggal atau waktu Anda, atau jika nilai tanggal atau waktu Anda menggunakan format yang berbeda, gunakan `'auto'` argumen dengan parameter DATEFORMAT atau TIMEFORMAT. `'auto'`Argumen mengenali beberapa format yang tidak didukung saat menggunakan string DATEFORMAT dan TIMEFORMAT. Kata kunci `'auto'` 'peka huruf besar/kecil. Untuk informasi selengkapnya, lihat [Menggunakan pengenalan otomatis dengan DATEFORMAT dan TIMEFORMAT](automatic-recognition.md).   
Format tanggal dapat mencakup informasi waktu (jam, menit, detik), tetapi informasi ini diabaikan. Kata kunci AS adalah opsional. Untuk informasi selengkapnya, lihat [string DATEFORMAT dan TIMEFORMATContoh](r_DATEFORMAT_and_TIMEFORMAT_strings.md).

KOSONGNULL   <a name="copy-emptyasnull"></a>
Menunjukkan bahwa Amazon Redshift harus memuat bidang CHAR dan VARCHAR kosong sebagai NULL. Bidang kosong untuk tipe data lain, seperti INT, selalu dimuat dengan NULL. Bidang kosong terjadi ketika data berisi dua pembatas berturut-turut tanpa karakter di antara pembatas. EMTTYASNULL dan NULL AS "(string kosong) menghasilkan perilaku yang sama.

*PENGKODEAN [AS] file\$1encoding*  <a name="copy-encoding"></a>
Menentukan jenis pengkodean data beban. Perintah COPY mengubah data dari pengkodean yang ditentukan menjadi UTF-8 selama pemuatan.   
Nilai yang valid untuk *file\$1encoding* adalah sebagai berikut:  
+ `UTF8`
+ `UTF16`
+ `UTF16LE`
+ `UTF16BE`
+ `ISO88591`
Nilai default-nya `UTF8`.  
Nama file sumber harus menggunakan pengkodean UTF-8.  
File-file berikut harus menggunakan pengkodean UTF-8, bahkan jika pengkodean yang berbeda ditentukan untuk data beban:  
+ File manifes
+ JSONPaths berkas
String argumen yang disediakan dengan parameter berikut harus menggunakan UTF-8:  
+ *FIXEDWIDTH 'fixedwidth\$1spec'*
+ *TERIMA INVCHARS 'replacement\$1char'*
+ *DATEFORMAT 'dateformat\$1string'*
+ *FORMAT WAKTU 'timeformat\$1string'*
+ NULL SEBAGAI '*null\$1string*'
File data dengan lebar tetap harus menggunakan pengkodean UTF-8. Lebar bidang didasarkan pada jumlah karakter, bukan jumlah byte.   
Semua data beban harus menggunakan pengkodean yang ditentukan. Jika COPY menemukan pengkodean yang berbeda, ia melewatkan file dan mengembalikan kesalahan.   
Jika Anda menentukan`UTF16`, maka data Anda harus memiliki tanda urutan byte (BOM). Jika Anda tahu apakah data UTF-16 Anda adalah little-endian (LE) atau big-endian (BE), Anda dapat menggunakan `UTF16LE` atau`UTF16BE`, terlepas dari keberadaan BOM.   
Untuk menggunakan pengkodean ISO-8859-1 tentukan. `ISO88591` *Untuk informasi lebih lanjut, lihat [ISO/IEC 8859-1](https://en.wikipedia.org/wiki/ISO/IEC_8859-1) di Wikipedia.*

MELARIKAN DIRI   <a name="copy-escape"></a>
Ketika parameter ini ditentukan, karakter garis miring terbalik (`\`) dalam data input diperlakukan sebagai karakter escape. Karakter yang segera mengikuti karakter garis miring terbalik dimuat ke dalam tabel sebagai bagian dari nilai kolom saat ini, bahkan jika itu adalah karakter yang biasanya melayani tujuan khusus. Misalnya, Anda dapat menggunakan parameter ini untuk menghindari karakter pembatas, tanda kutip, karakter baris baru yang disematkan, atau karakter escape itu sendiri ketika salah satu karakter ini adalah bagian yang sah dari nilai kolom.  
Jika Anda menentukan parameter ESCAPE dalam kombinasi dengan parameter REMOVEQUOTES, Anda dapat melarikan diri dan mempertahankan tanda kutip (`'`atau`"`) yang mungkin dihapus. String null default,`\N`, berfungsi apa adanya, tetapi juga dapat diloloskan dalam data input sebagai. `\\N` Selama Anda tidak menentukan string null alternatif dengan parameter NULL AS, `\N` dan `\\N` menghasilkan hasil yang sama.  
Karakter kontrol `0x00` (NUL) tidak dapat lolos dan harus dihapus dari data input atau dikonversi. Karakter ini diperlakukan sebagai penanda akhir catatan (EOR), menyebabkan sisa catatan terpotong.
Anda tidak dapat menggunakan parameter ESCAPE untuk beban FIXEDWIDTH, dan Anda tidak dapat menentukan karakter escape itu sendiri; karakter escape selalu karakter garis miring terbalik. Selain itu, Anda harus memastikan bahwa data input berisi karakter escape di tempat yang sesuai.  
Berikut adalah beberapa contoh data input dan data yang dimuat yang dihasilkan saat parameter ESCAPE ditentukan. Hasil untuk baris 4 mengasumsikan bahwa parameter REMOVEQUOTES juga ditentukan. Data input terdiri dari dua bidang yang dibatasi pipa:   

```
1|The quick brown fox\[newline]
jumped over the lazy dog.
2| A\\B\\C
3| A \| B \| C
4| 'A Midsummer Night\'s Dream'
```
Data yang dimuat ke kolom 2 terlihat seperti ini:   

```
The quick brown fox
jumped over the lazy dog.
A\B\C
A|B|C
A Midsummer Night's Dream
```
Menerapkan karakter escape ke data input untuk beban adalah tanggung jawab pengguna. Satu pengecualian untuk persyaratan ini adalah ketika Anda memuat ulang data yang sebelumnya dibongkar dengan parameter ESCAPE. Dalam hal ini, data sudah berisi karakter escape yang diperlukan.
Parameter ESCAPE tidak menafsirkan oktal, hex, Unicode, atau notasi urutan escape lainnya. Misalnya, jika data sumber Anda berisi nilai umpan baris oktal (`\012`) dan Anda mencoba memuat data ini dengan parameter ESCAPE, Amazon Redshift memuat `012` nilai ke dalam tabel dan tidak menafsirkan nilai ini sebagai umpan baris yang sedang di-escape.  
Untuk menghindari karakter baris baru dalam data yang berasal dari platform Microsoft Windows, Anda mungkin perlu menggunakan dua karakter escape: satu untuk carriage return dan satu untuk line feed. Atau, Anda dapat menghapus pengembalian carriage sebelum memuat file (misalnya, dengan menggunakan utilitas dos2unix).

EKSPLISIT   <a name="copy-explicit-ids"></a>
Gunakan EXPLICIT\$1IDS dengan tabel yang memiliki kolom IDENTITY jika Anda ingin mengganti nilai yang dibuat secara otomatis dengan nilai eksplisit dari file data sumber untuk tabel. Jika perintah menyertakan daftar kolom, daftar itu harus menyertakan kolom IDENTITY untuk menggunakan parameter ini. Format data untuk nilai EXPLICIT\$1IDS harus cocok dengan format IDENTITY yang ditentukan oleh definisi CREATE TABLE.  
Saat Anda menjalankan perintah COPY terhadap tabel dengan opsi EXPLICIT\$1IDS, Amazon Redshift tidak memeriksa keunikan kolom IDENTITY dalam tabel.  
Jika kolom didefinisikan dengan GENERATED BY DEFAULT AS IDENTITY, maka itu dapat disalin. Nilai dihasilkan atau diperbarui dengan nilai yang Anda berikan. Opsi EXPLICIT\$1IDS tidak diperlukan. COPY tidak memperbarui tanda air identitas tinggi.  
 Untuk contoh perintah COPY menggunakan EXPLICIT\$1IDS, lihat. [Muat VENUE dengan nilai eksplisit untuk kolom IDENTITY](r_COPY_command_examples.md#r_COPY_command_examples-load-venue-with-explicit-values-for-an-identity-column)

FILLRECORD   <a name="copy-fillrecord"></a>
Memungkinkan file data dimuat ketika kolom yang berdekatan hilang di akhir beberapa catatan. Kolom yang hilang dimuat sebagai NULLs. Untuk format teks dan CSV, jika kolom yang hilang adalah kolom VARCHAR, string panjang nol dimuat, bukan. NULLs Untuk memuat NULLs ke kolom VARCHAR dari teks dan CSV, tentukan kata kunci EMPTYASNULL. Substitusi NULL hanya berfungsi jika definisi kolom memungkinkan. NULLs  
Misalnya, jika definisi tabel berisi empat kolom CHAR yang dapat dibatalkan, dan catatan berisi nilai`apple, orange, banana, mango`, perintah COPY dapat memuat dan mengisi catatan yang hanya berisi nilai. `apple, orange` Nilai CHAR yang hilang akan dimuat sebagai nilai NULL.

IGNOREBLANKLINES   <a name="copy-ignoreblanklines"></a>
Mengabaikan baris kosong yang hanya berisi umpan baris dalam file data dan tidak mencoba memuatnya.

*IGNOREHEADER [AS] number\$1rows*   <a name="copy-ignoreheader"></a>
Memperlakukan *number\$1rows* yang ditentukan sebagai header file dan tidak memuatnya. Gunakan IGNOREHEADER untuk melewati header file di semua file dalam beban paralel.

NULL SEBAGAI '*null\$1string*'   <a name="copy-null-as"></a>
Memuat bidang yang cocok dengan *null\$1string* sebagai NULL, di mana *null\$1string* dapat berupa string apa pun. Jika data Anda menyertakan terminator null, juga disebut NUL (UTF-8 0000) atau biner nol (0x000), COPY memperlakukannya sebagai karakter lainnya. Misalnya, rekaman yang berisi '1' \$1\$1 NUL \$1\$1 '2' disalin sebagai string dengan panjang 3 byte. Jika bidang hanya berisi NUL, Anda dapat menggunakan NULL AS untuk mengganti terminator null dengan NULL dengan menentukan `'\0'` atau —misalnya, atau. `'\000'` `NULL AS '\0'` `NULL AS '\000'` Jika bidang berisi string yang berakhir dengan NUL dan NULL AS ditentukan, string dimasukkan dengan NUL di akhir. Jangan gunakan '\$1n' (baris baru) untuk nilai *null\$1string*. Amazon Redshift mencadangkan '\$1n' untuk digunakan sebagai pembatas garis. *Null\$1string* default adalah '. `'\N`  
Jika Anda mencoba memuat null ke dalam kolom yang didefinisikan sebagai NOT NULL, perintah COPY akan gagal.

HAPUSQUOTES   <a name="copy-removequotes"></a>
Hapus tanda kutip yang mengelilingi string pada data yang akan masuk. Semua karakter dalam tanda kutip, termasuk delimiter, dipertahankan. Jika string memiliki tanda kutip tunggal atau ganda awal tetapi tidak ada tanda akhir yang sesuai, perintah COPY gagal memuat baris itu dan mengembalikan kesalahan. Tabel berikut menunjukkan beberapa contoh sederhana dari string yang berisi tanda kutip dan nilai dimuat yang dihasilkan.      
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/redshift/latest/dg/copy-parameters-data-conversion.html)

ROUNDEC   <a name="copy-roundec"></a>
Membulatkan nilai numerik ketika skala nilai input lebih besar dari skala kolom. Secara default, COPY memotong nilai bila perlu agar sesuai dengan skala kolom. Misalnya, jika nilai dimuat ke kolom DECIMAL (8,2), COPY memotong nilainya secara default. `20.259` `20.25` Jika ROUNDEC ditentukan, COPY membulatkan nilainya ke. `20.26` Perintah INSERT selalu membulatkan nilai bila diperlukan untuk mencocokkan skala kolom, sehingga perintah COPY dengan parameter ROUNDEC berperilaku sama seperti perintah INSERT.

TIMEFORMAT [AS] \$1'*timeformat\$1string*' \$1 'auto' \$1 'epochsecs' \$1 'epochmillisecs'\$1  <a name="copy-timeformat"></a>
Menentukan format waktu. Jika tidak ada TIMEFORMAT yang ditentukan, format default adalah `YYYY-MM-DD HH:MI:SS` untuk kolom TIMESTAMP atau `YYYY-MM-DD HH:MI:SSOF` untuk kolom TIMESTAMPTZ, di mana offset dari Coordinated `OF` Universal Time (UTC). Anda tidak dapat menyertakan penentu zona waktu dalam *timeformat\$1string*. Untuk memuat data TIMESTAMPTZ yang dalam format yang berbeda dari format default, tentukan 'auto'; untuk informasi selengkapnya, lihat. [Menggunakan pengenalan otomatis dengan DATEFORMAT dan TIMEFORMAT](automatic-recognition.md) Untuk informasi selengkapnya tentang *timeformat\$1string*, lihat. [string DATEFORMAT dan TIMEFORMATContoh](r_DATEFORMAT_and_TIMEFORMAT_strings.md)  
`'auto'`Argumen mengenali beberapa format yang tidak didukung saat menggunakan string DATEFORMAT dan TIMEFORMAT. Jika perintah COPY tidak mengenali format nilai tanggal atau waktu Anda, atau jika nilai tanggal dan waktu Anda menggunakan format yang berbeda satu sama lain, gunakan `'auto'` argumen dengan parameter DATEFORMAT atau TIMEFORMAT. Untuk informasi selengkapnya, lihat [Menggunakan pengenalan otomatis dengan DATEFORMAT dan TIMEFORMAT](automatic-recognition.md).   
Jika data sumber Anda direpresentasikan sebagai waktu epoch, itu adalah jumlah detik atau milidetik sejak 1 Januari 1970, 00:00:00 UTC, tentukan atau. `'epochsecs'` `'epochmillisecs'`   
Kata kunci `'auto'``'epochsecs'`, dan `'epochmillisecs'` kata kunci peka huruf besar/kecil.  
Kata kunci AS adalah opsional.

TRIMBLANKS   <a name="copy-trimblanks"></a>
Menghapus karakter spasi putih tertinggal dari string VARCHAR. Parameter ini hanya berlaku untuk kolom dengan tipe data VARCHAR.

TRUNCATECOLUMNS   <a name="copy-truncatecolumns"></a>
Potong data dalam kolom sesuai dengan jumlah karakter sehingga cocok dengan spesifikasi kolom. Berlaku hanya pada kolom dengan tipe data VARCHAR atau CHAR, dan baris berukuran 4 MB atau kurang.

# Operasi pemuatan data
<a name="copy-parameters-data-load"></a>

Kelola perilaku default operasi pemuatan untuk pemecahan masalah atau untuk mengurangi waktu muat dengan menentukan parameter berikut. 
+ [COMPROWS](#copy-comprows) 
+ [COMPUPDATE](#copy-compupdate) 
+ [IGNOREALLERRORS](#copy-ignoreallerrors) 
+ [MAXERROR](#copy-maxerror) 
+ [NOLOAD](#copy-noload) 
+ [STATUPDATE](#copy-statupdate) <a name="copy-data-load-parameters"></a>Parameter

*COMPROWS numrows*   <a name="copy-comprows"></a>
Menentukan jumlah baris yang akan digunakan sebagai ukuran sampel untuk analisis kompresi. Analisis dijalankan pada baris dari setiap irisan data. Misalnya, jika Anda menentukan `COMPROWS 1000000` (1.000.000) dan sistem berisi empat irisan total, tidak lebih dari 250.000 baris untuk setiap irisan dibaca dan dianalisis.  
Jika COMPROWS tidak ditentukan, ukuran sampel default menjadi 100.000 untuk setiap irisan. Nilai COMPROWS lebih rendah dari default 100.000 baris untuk setiap irisan secara otomatis ditingkatkan ke nilai default. Namun, kompresi otomatis tidak akan terjadi jika jumlah data yang dimuat tidak cukup untuk menghasilkan sampel yang berarti.  
Jika jumlah COMPROWS lebih besar dari jumlah baris dalam file input, perintah COPY masih melanjutkan dan menjalankan analisis kompresi pada semua baris yang tersedia. Rentang yang diterima untuk argumen ini adalah angka antara 1000 dan 2147483647 (2.147.483.647).

COMPUPDATE [PRESET \$1 \$1ON \$1 TRUE\$1 \$1 \$1OFF \$1 FALSE\$1]  <a name="copy-compupdate"></a>
Mengontrol apakah pengkodean kompresi diterapkan secara otomatis selama COPY.   
Ketika COMPUPDATE PRESET, perintah COPY memilih pengkodean kompresi untuk setiap kolom jika tabel target kosong; bahkan jika kolom sudah memiliki pengkodean selain RAW. Saat ini pengkodean kolom yang ditentukan dapat diganti. Pengkodean untuk setiap kolom didasarkan pada tipe data kolom. Tidak ada data yang diambil sampelnya. Amazon Redshift secara otomatis menetapkan pengkodean kompresi sebagai berikut:  
+ Kolom yang didefinisikan sebagai kunci pengurutan diberi kompresi RAW.
+ Kolom yang didefinisikan sebagai tipe data BOOLEAN, REAL, atau DOUBLE PRECISION diberi kompresi RAW.
+ Kolom yang didefinisikan sebagai SMALLINT, INTEGER, BIGINT, DECIMAL, DATE, TIMESTAMP, atau TIMESTAMPTZ diberi kompresi. AZ64 
+ Kolom yang didefinisikan sebagai CHAR atau VARCHAR diberi kompresi LZO.
Ketika COMPUPDATE dihilangkan, perintah COPY memilih pengkodean kompresi untuk setiap kolom hanya jika tabel target kosong dan Anda belum menentukan pengkodean (selain RAW) untuk salah satu kolom. Pengkodean untuk setiap kolom ditentukan oleh Amazon Redshift. Tidak ada data yang diambil sampelnya.   
Ketika COMPUPDATE AKTIF (atau TRUE), atau COMPUPDATE ditentukan tanpa opsi, perintah COPY menerapkan kompresi otomatis jika tabel kosong; bahkan jika kolom tabel sudah memiliki pengkodean selain RAW. Saat ini pengkodean kolom yang ditentukan dapat diganti. Pengkodean untuk setiap kolom didasarkan pada analisis data sampel. Untuk informasi selengkapnya, lihat [Memuat tabel dengan kompresi otomatis](c_Loading_tables_auto_compress.md).  
Ketika COMPUPDATE OFF (atau FALSE), kompresi otomatis dinonaktifkan. Pengkodean kolom tidak diubah.  
Untuk informasi tentang tabel sistem untuk menganalisis kompresi, lihat[STL\$1ANALYZE\$1COMPRESSION](r_STL_ANALYZE_COMPRESSION.md). 

IGNOREALLERRORS   <a name="copy-ignoreallerrors"></a>
Anda dapat menentukan opsi ini untuk mengabaikan semua kesalahan yang terjadi selama operasi pemuatan.   
Anda tidak dapat menentukan opsi IGNOREALLERRORS jika Anda menentukan opsi MAXERROR. Anda tidak dapat menentukan opsi IGNOREALLERRORS untuk format kolumnar termasuk ORC dan Parket.

*MAXERROR [AS] error\$1count*   <a name="copy-maxerror"></a>
Jika beban mengembalikan jumlah *kesalahan error\$1count* atau lebih besar, beban gagal. Jika beban mengembalikan lebih sedikit kesalahan, itu berlanjut dan mengembalikan pesan INFO yang menyatakan jumlah baris yang tidak dapat dimuat. Gunakan parameter ini untuk memungkinkan pemuatan berlanjut ketika baris tertentu gagal dimuat ke dalam tabel karena kesalahan pemformatan atau ketidakkonsistenan lainnya dalam data.   
Tetapkan nilai ini ke `0` atau `1` jika Anda ingin beban gagal segera setelah kesalahan pertama terjadi. Kata kunci AS adalah opsional. Nilai default MAXERROR adalah `0` dan batasnya adalah`100000`.  
 Jumlah aktual kesalahan yang dilaporkan mungkin lebih besar daripada MAXERROR yang ditentukan karena sifat paralel Amazon Redshift. Jika ada node di cluster Amazon Redshift yang mendeteksi bahwa MAXERROR telah terlampaui, setiap node melaporkan semua kesalahan yang dialaminya.

NOLOAD   <a name="copy-noload"></a>
Memeriksa validitas file data tanpa benar-benar memuat data. Gunakan parameter NOLOAD untuk memastikan bahwa file data Anda dimuat tanpa kesalahan sebelum menjalankan pemuatan data yang sebenarnya. Menjalankan COPY dengan parameter NOLOAD jauh lebih cepat daripada memuat data karena hanya mem-parsing file.

STATUPDATE [\$1ON \$1 TRUE\$1 \$1 \$1OFF \$1 FALSE\$1]  <a name="copy-statupdate"></a>
Mengatur komputasi otomatis dan penyegaran statistik pengoptimal di akhir perintah COPY yang berhasil. Secara default, jika parameter STATUPDATE tidak digunakan, statistik diperbarui secara otomatis jika tabel awalnya kosong.  
Setiap kali memasukkan data ke dalam tabel nonempty secara signifikan mengubah ukuran tabel, kami sarankan memperbarui statistik baik dengan menjalankan [MENGANALISA](r_ANALYZE.md) perintah atau dengan menggunakan argumen STATUPDATE ON.  
Dengan STATUPDATE ON (atau TRUE), statistik diperbarui secara otomatis terlepas dari apakah tabel awalnya kosong. Jika STATUPDATE digunakan, pengguna saat ini harus pemilik tabel atau superuser. Jika STATUPDATE tidak ditentukan, hanya izin INSERT yang diperlukan.  
Dengan STATUPDATE OFF (atau FALSE), statistik tidak pernah diperbarui.  
Untuk informasi tambahan, lihat [Menganalisis tabel](t_Analyzing_tables.md).

# Daftar parameter abjad
<a name="r_COPY-alphabetical-parm-list"></a>

Daftar berikut menyediakan link ke setiap deskripsi parameter perintah COPY, diurutkan menurut abjad.
+ [ACCEPTANYDATE](copy-parameters-data-conversion.md#copy-acceptanydate)
+ [ACCEPTINVCHARS](copy-parameters-data-conversion.md#copy-acceptinvchars)
+ [ACCESS\$1KEY\$1ID, SECRET\$1ACCESS\$1KEY](copy-parameters-authorization.md#copy-access-key-id-access)
+ [AVRO](copy-parameters-data-format.md#copy-avro)
+ [BLANKSASNULL](copy-parameters-data-conversion.md#copy-blanksasnull)
+ [BZIP2](copy-parameters-file-compression.md#copy-bzip2) 
+ [COMPROWS](copy-parameters-data-load.md#copy-comprows)
+ [COMPUPDATE](copy-parameters-data-load.md#copy-compupdate)
+ [KREDENSIAL](copy-parameters-authorization.md#copy-credentials-cred)
+ [CSV](copy-parameters-data-format.md#copy-csv)
+ [DATEFORMAT](copy-parameters-data-conversion.md#copy-dateformat)
+ [DELIMITER](copy-parameters-data-format.md#copy-delimiter)
+ [EMPTYASNULL](copy-parameters-data-conversion.md#copy-emptyasnull)
+ [ENCODING](copy-parameters-data-conversion.md#copy-encoding)
+ [ENCRYPTED](copy-parameters-data-source-s3.md#copy-encrypted)
+ [ESCAPE](copy-parameters-data-conversion.md#copy-escape)
+ [EXPLICIT_IDS](copy-parameters-data-conversion.md#copy-explicit-ids)
+ [FILLRECORD](copy-parameters-data-conversion.md#copy-fillrecord)
+ [FIXEDWIDTH](copy-parameters-data-format.md#copy-fixedwidth)
+ [FORMAT](copy-parameters-data-format.md#copy-format)
+ [FROM](copy-parameters-data-source-s3.md#copy-parameters-from)
+ [GZIP](copy-parameters-file-compression.md#copy-gzip)
+ [IAM\$1ROLE](copy-parameters-authorization.md#copy-iam-role-iam)
+ [IGNOREALLERRORS](copy-parameters-data-load.md#copy-ignoreallerrors)
+ [IGNOREBLANKLINES](copy-parameters-data-conversion.md#copy-ignoreblanklines)
+ [IGNOREHEADER](copy-parameters-data-conversion.md#copy-ignoreheader)
+ [JSON format for COPY](copy-parameters-data-format.md#copy-json)
+ [LZOP](copy-parameters-file-compression.md#copy-lzop)
+ [MANIFEST](copy-parameters-data-source-s3.md#copy-manifest)
+ [MASTER_SYMMETRIC_KEY](copy-parameters-data-source-s3.md#copy-master-symmetric-key)
+ [MAXERROR](copy-parameters-data-load.md#copy-maxerror)
+ [NOLOAD](copy-parameters-data-load.md#copy-noload)
+ [NULL AS](copy-parameters-data-conversion.md#copy-null-as)
+ [READRATIO](copy-parameters-data-source-dynamodb.md#copy-readratio)
+ [REGION](copy-parameters-data-source-s3.md#copy-region)
+ [REMOVEQUOTES](copy-parameters-data-conversion.md#copy-removequotes)
+ [ROUNDEC](copy-parameters-data-conversion.md#copy-roundec)
+ [SESSION\$1TOKEN](copy-parameters-authorization.md#copy-token)
+ [SHAPEFILE](copy-parameters-data-format.md#copy-shapefile)
+ [SSH](copy-parameters-data-source-ssh.md#copy-ssh)
+ [STATUPDATE](copy-parameters-data-load.md#copy-statupdate)
+ [TIMEFORMAT](copy-parameters-data-conversion.md#copy-timeformat)
+ [TRIMBLANKS](copy-parameters-data-conversion.md#copy-trimblanks)
+ [TRUNCATECOLUMNS](copy-parameters-data-conversion.md#copy-truncatecolumns)
+ [ZSTD](copy-parameters-file-compression.md#copy-zstd)

# Catatan penggunaan
<a name="r_COPY_usage_notes"></a>

**Topics**
+ [Izin untuk mengakses Sumber Daya lainnya AWS](copy-usage_notes-access-permissions.md)
+ [Menggunakan COPY dengan alias jalur akses Amazon S3](copy-usage_notes-s3-access-point-alias.md)
+ [Memuat data multibyte dari Amazon S3](copy-usage_notes-multi-byte.md)
+ [Memuat kolom tipe data GEOMETRI atau GEOGRAFI](copy-usage_notes-spatial-data.md)
+ [Memuat tipe data HLLSKETCH](copy-usage_notes-hll.md)
+ [Memuat kolom tipe data VARBYTE](copy-usage-varbyte.md)
+ [Kesalahan saat membaca banyak file](copy-usage_notes-multiple-files.md)
+ [COPY dari format JSON](copy-usage_notes-copy-from-json.md)
+ [COPY dari format data kolumnar](copy-usage_notes-copy-from-columnar.md)
+ [string DATEFORMAT dan TIMEFORMAT](r_DATEFORMAT_and_TIMEFORMAT_strings.md)
+ [Menggunakan pengenalan otomatis dengan DATEFORMAT dan TIMEFORMAT](automatic-recognition.md)

# Izin untuk mengakses Sumber Daya lainnya AWS
<a name="copy-usage_notes-access-permissions"></a>

 Untuk memindahkan data antara cluster Anda dan AWS sumber daya lain, seperti Amazon S3, Amazon DynamoDB, Amazon EMR, atau Amazon EC2, klaster Anda harus memiliki izin untuk mengakses sumber daya dan melakukan tindakan yang diperlukan. Misalnya, untuk memuat data dari Amazon S3, COPY harus memiliki akses LIST ke bucket dan GET access untuk objek bucket. Untuk informasi tentang izin minimum, lihat[Izin IAM untuk COPY, UNLOAD, dan CREATE LIBRARY](#copy-usage_notes-iam-permissions).

Untuk mendapatkan otorisasi untuk mengakses sumber daya, cluster Anda harus diautentikasi. Anda dapat memilih salah satu dari metode otentikasi berikut: 
+ [Kontrol akses berbasis peran](#copy-usage_notes-access-role-based)— Untuk kontrol akses berbasis peran, Anda menentukan peran AWS Identity and Access Management (IAM) yang digunakan klaster Anda untuk otentikasi dan otorisasi. Untuk melindungi AWS kredensi dan data sensitif Anda, kami sangat menyarankan untuk menggunakan otentikasi berbasis peran.
+ [Kontrol akses berbasis kunci](#copy-usage_notes-access-key-based)— Untuk kontrol akses berbasis kunci, Anda memberikan kredensi AWS akses (ID kunci akses dan kunci akses rahasia) untuk pengguna sebagai teks biasa.

## Kontrol akses berbasis peran
<a name="copy-usage_notes-access-role-based"></a>

Dengan <a name="copy-usage_notes-access-role-based.phrase"></a>kontrol akses berbasis peran, klaster Anda untuk sementara mengambil peran IAM atas nama Anda. Kemudian, berdasarkan otorisasi yang diberikan untuk peran tersebut, klaster Anda dapat mengakses AWS sumber daya yang diperlukan.

Membuat *peran* IAM mirip dengan memberikan izin kepada pengguna, karena itu adalah AWS identitas dengan kebijakan izin yang menentukan apa yang dapat dan tidak dapat dilakukan identitas. AWS Namun, alih-alih dikaitkan secara unik dengan satu pengguna, peran dapat diasumsikan oleh entitas mana pun yang membutuhkannya. Selain itu, peran tidak memiliki kredensi apa pun (kata sandi atau kunci akses) yang terkait dengannya. Sebaliknya, jika peran dikaitkan dengan cluster, kunci akses dibuat secara dinamis dan disediakan untuk cluster.

Sebaiknya gunakan kontrol akses berbasis peran karena memberikan kontrol akses yang lebih aman dan halus terhadap AWS sumber daya dan data pengguna yang sensitif, selain melindungi kredensil Anda. AWS 

Otentikasi berbasis peran memberikan manfaat berikut:
+ Anda dapat menggunakan alat IAM AWS standar untuk menentukan peran IAM dan mengaitkan peran dengan beberapa cluster. Saat Anda mengubah kebijakan akses untuk peran, perubahan akan diterapkan secara otomatis ke semua cluster yang menggunakan peran tersebut.
+ Anda dapat menentukan kebijakan IAM berbutir halus yang memberikan izin bagi kluster dan pengguna database tertentu untuk mengakses sumber daya dan tindakan tertentu. AWS 
+ Cluster Anda memperoleh kredensi sesi sementara pada waktu berjalan dan menyegarkan kredensialnya sesuai kebutuhan hingga operasi selesai. Jika Anda menggunakan kredensil sementara berbasis kunci, operasi gagal jika kredensil sementara kedaluwarsa sebelum selesai.
+ ID kunci akses dan ID kunci akses rahasia Anda tidak disimpan atau ditransmisikan dalam kode SQL Anda.

Untuk menggunakan kontrol akses berbasis peran, Anda harus terlebih dahulu membuat peran IAM menggunakan jenis peran layanan Amazon Redshift, lalu lampirkan peran tersebut ke cluster Anda. Peran harus memiliki, setidaknya, izin yang tercantum dalam[Izin IAM untuk COPY, UNLOAD, dan CREATE LIBRARY](#copy-usage_notes-iam-permissions). Untuk langkah-langkah untuk membuat peran IAM dan melampirkannya ke klaster Anda, lihat [Mengotorisasi Amazon Redshift untuk Mengakses Layanan AWS Lain Atas Nama Anda di Panduan](https://docs.aws.amazon.com/redshift/latest/mgmt/authorizing-redshift-service.html) Manajemen Amazon *Redshift*.

Anda dapat menambahkan peran ke klaster atau melihat peran yang terkait dengan klaster menggunakan Amazon Redshift Management Console, CLI, atau API. Untuk informasi selengkapnya, lihat [Mengaitkan Peran IAM Dengan Cluster di Panduan](https://docs.aws.amazon.com/redshift/latest/mgmt/copy-unload-iam-role.html) Manajemen *Pergeseran Merah Amazon*.

Saat Anda membuat peran IAM, IAM mengembalikan Amazon Resource Name (ARN) untuk peran tersebut. Untuk menentukan peran IAM, berikan peran ARN dengan parameter atau [Menggunakan parameter CREDENTIALS](copy-parameters-authorization.md#copy-credentials) parameter. [Menggunakan parameter IAM\$1ROLE](copy-parameters-authorization.md#copy-iam-role) 

Sebagai contoh, misalkan peran berikut dilampirkan ke cluster.

```
"IamRoleArn": "arn:aws:iam::0123456789012:role/MyRedshiftRole"
```

Contoh perintah COPY berikut menggunakan parameter IAM\$1ROLE dengan ARN pada contoh sebelumnya untuk otentikasi dan akses ke Amazon S3.

```
copy customer from 's3://amzn-s3-demo-bucket/mydata'  
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole';
```

Contoh perintah COPY berikut menggunakan parameter CREDENTIALS untuk menentukan peran IAM.

```
copy customer from 's3://amzn-s3-demo-bucket/mydata' 
credentials 
'aws_iam_role=arn:aws:iam::0123456789012:role/MyRedshiftRole';
```

Selain itu, superuser dapat memberikan hak istimewa ASSUMEROLE kepada pengguna database dan grup untuk menyediakan akses ke peran untuk operasi COPY. Untuk informasi, lihat [HIBAH](r_GRANT.md).

## Kontrol akses berbasis kunci
<a name="copy-usage_notes-access-key-based"></a>

Dengan <a name="copy-usage_notes-access-key-based.phrase"></a>kontrol akses berbasis kunci, Anda memberikan ID kunci akses dan kunci akses rahasia untuk pengguna IAM yang berwenang untuk mengakses AWS sumber daya yang berisi data. Anda dapat menggunakan [Menggunakan parameter ACCESS\$1KEY\$1ID dan SECRET\$1ACCESS\$1KEY](copy-parameters-authorization.md#copy-access-key-id) parameter bersama-sama atau [Menggunakan parameter CREDENTIALS](copy-parameters-authorization.md#copy-credentials) parameter.

**catatan**  
Kami sangat menyarankan menggunakan peran IAM untuk otentikasi daripada menyediakan ID kunci akses teks biasa dan kunci akses rahasia. Jika Anda memilih kontrol akses berbasis kunci, jangan pernah menggunakan kredensyal AWS akun (root) Anda. Selalu buat pengguna IAM dan berikan ID kunci akses dan kunci akses rahasia pengguna tersebut. Untuk langkah-langkah untuk membuat pengguna IAM, lihat [Membuat Pengguna IAM di Akun Anda AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html).

Untuk mengautentikasi menggunakan ACCESS\$1KEY\$1ID dan SECRET\$1ACCESS\$1KEY, ganti *<access-key-id>* dan *<secret-access-key>* dengan ID kunci akses pengguna resmi dan kunci akses rahasia lengkap seperti yang ditunjukkan berikut. 

```
ACCESS_KEY_ID '<access-key-id>'
SECRET_ACCESS_KEY '<secret-access-key>';
```

Untuk mengautentikasi menggunakan parameter CREDENTIALS, ganti *<access-key-id>* dan *<secret-access-key>* dengan ID kunci akses pengguna resmi dan kunci akses rahasia lengkap seperti yang ditunjukkan berikut.

```
CREDENTIALS
'aws_access_key_id=<access-key-id>;aws_secret_access_key=<secret-access-key>';
```

Pengguna IAM harus memiliki, minimal, izin yang tercantum dalam. [Izin IAM untuk COPY, UNLOAD, dan CREATE LIBRARY](#copy-usage_notes-iam-permissions)

### Kredensial keamanan sementara
<a name="r_copy-temporary-security-credentials"></a>

 Jika Anda menggunakan kontrol akses berbasis kunci, Anda dapat membatasi akses yang dimiliki pengguna ke data Anda dengan menggunakan kredensil keamanan sementara. Otentikasi berbasis peran secara otomatis menggunakan kredensil sementara. 

**catatan**  
Kami sangat menyarankan menggunakan [role-based access control](#copy-usage_notes-access-role-based.phrase) alih-alih membuat kredensil sementara dan memberikan ID kunci akses dan kunci akses rahasia sebagai teks biasa. Kontrol akses berbasis peran secara otomatis menggunakan kredensil sementara. 

Kredensyal keamanan sementara memberikan keamanan yang ditingkatkan karena mereka memiliki rentang hidup yang pendek dan tidak dapat digunakan kembali setelah kedaluwarsa. ID kunci akses dan kunci akses rahasia yang dihasilkan dengan token tidak dapat digunakan tanpa token, dan pengguna yang memiliki kredensil keamanan sementara ini dapat mengakses sumber daya Anda hanya sampai kredensialnya kedaluwarsa.

Untuk memberi pengguna akses sementara ke sumber daya Anda, Anda memanggil operasi API AWS Security Token Service (AWS STS). Operasi AWS STS API mengembalikan kredensil keamanan sementara yang terdiri dari token keamanan, ID kunci akses, dan kunci akses rahasia. Anda mengeluarkan kredensi keamanan sementara kepada pengguna yang membutuhkan akses sementara ke sumber daya Anda. Pengguna ini bisa menjadi pengguna IAM yang sudah ada, atau mereka bisa bukan AWS pengguna. Untuk informasi selengkapnya tentang membuat kredensil keamanan sementara, lihat [Menggunakan Kredensil Keamanan Sementara di Panduan Pengguna IAM](https://docs.aws.amazon.com/STS/latest/UsingSTS/Welcome.html).

Anda dapat menggunakan [Menggunakan parameter ACCESS\$1KEY\$1ID dan SECRET\$1ACCESS\$1KEY](copy-parameters-authorization.md#copy-access-key-id) parameter bersama dengan [SESSION\$1TOKEN](copy-parameters-authorization.md#copy-token) parameter atau [Menggunakan parameter CREDENTIALS](copy-parameters-authorization.md#copy-credentials) parameter. Anda juga harus menyediakan ID kunci akses dan kunci akses rahasia yang disediakan dengan token.

Untuk mengautentikasi menggunakan ACCESS\$1KEY\$1ID, SECRET\$1ACCESS\$1KEY, dan SESSION\$1TOKEN, ganti, dan seperti yang ditunjukkan berikut. *<temporary-access-key-id>* *<temporary-secret-access-key>* *<temporary-token>* 

```
ACCESS_KEY_ID '<temporary-access-key-id>'
SECRET_ACCESS_KEY '<temporary-secret-access-key>'
SESSION_TOKEN '<temporary-token>';
```

Untuk mengautentikasi menggunakan CREDENTIALS, sertakan `session_token=<temporary-token>` dalam string kredensial seperti yang ditunjukkan berikut. 

```
CREDENTIALS
'aws_access_key_id=<temporary-access-key-id>;aws_secret_access_key=<temporary-secret-access-key>;session_token=<temporary-token>';
```

Contoh berikut menunjukkan perintah COPY dengan kredenal keamanan sementara.

```
copy table-name
from 's3://objectpath'
access_key_id '<temporary-access-key-id>'
secret_access_key '<temporary-secret-access-key>'
session_token '<temporary-token>';
```

Contoh berikut memuat tabel LISTING dengan kredensyal sementara dan enkripsi file.

```
copy listing
from 's3://amzn-s3-demo-bucket/data/listings_pipe.txt'
access_key_id '<temporary-access-key-id>'
secret_access_key '<temporary-secret-access-key>'
session_token '<temporary-token>'
master_symmetric_key '<root-key>'
encrypted;
```

Contoh berikut memuat tabel LISTING menggunakan parameter CREDENTIALS dengan kredensyal sementara dan enkripsi file.

```
copy listing
from 's3://amzn-s3-demo-bucket/data/listings_pipe.txt'
credentials 
'aws_access_key_id=<temporary-access-key-id>;aws_secret_access_key=<temporary-secret-access-key>;session_token=<temporary-token>;master_symmetric_key=<root-key>'
encrypted;
```

**penting**  
Kredensi keamanan sementara harus valid selama seluruh durasi operasi COPY atau UNLOAD. Jika kredensil keamanan sementara kedaluwarsa selama operasi, perintah gagal dan transaksi dibatalkan. Misalnya, jika kredensyal keamanan sementara kedaluwarsa setelah 15 menit dan operasi COPY membutuhkan satu jam, operasi COPY gagal sebelum selesai. Jika Anda menggunakan akses berbasis peran, kredensyal keamanan sementara secara otomatis disegarkan hingga operasi selesai.

## Izin IAM untuk COPY, UNLOAD, dan CREATE LIBRARY
<a name="copy-usage_notes-iam-permissions"></a>

Peran IAM atau pengguna yang direferensikan oleh parameter CREDENTIALS harus memiliki, minimal, izin berikut:
+ Untuk COPY dari Amazon S3, izin untuk MENCANTUMKAN bucket Amazon S3 dan DAPATKAN objek Amazon S3 yang sedang dimuat, dan file manifes, jika digunakan.
+ Untuk COPY dari Amazon S3, Amazon EMR, dan host jarak jauh (SSH) dengan data berformat JSON, izin untuk DAFTAR dan DAPATKAN file di JSONPaths Amazon S3, jika digunakan. 
+ Untuk COPY dari DynamoDB, izin untuk SCAN dan DESKRIPSIKAN tabel DynamoDB yang sedang dimuat. 
+ Untuk COPY dari kluster EMR Amazon, izin untuk `ListInstances` tindakan di klaster EMR Amazon. 
+ Untuk izin UNLOAD ke Amazon S3, GET, LIST, dan PUT untuk bucket Amazon S3 tempat file datanya dibongkar.
+ Untuk CREATE LIBRARY dari Amazon S3, izin untuk DAFTAR bucket Amazon S3 dan DAPATKAN objek Amazon S3 yang sedang diimpor.

**catatan**  
Jika Anda menerima pesan galat`S3ServiceException: Access Denied`, saat menjalankan perintah COPY, UNLOAD, atau CREATE LIBRARY, klaster Anda tidak memiliki izin akses yang tepat untuk Amazon S3.

Anda dapat mengelola izin IAM dengan melampirkan kebijakan IAM ke peran IAM yang dilampirkan ke kluster Anda, ke pengguna, atau ke grup tempat pengguna Anda berada. Misalnya, kebijakan `AmazonS3ReadOnlyAccess` terkelola memberikan izin LIST dan GET ke resource Amazon S3. Untuk informasi selengkapnya tentang kebijakan IAM, lihat [Mengelola Kebijakan IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage.html) di Panduan Pengguna *IAM*. 

# Menggunakan COPY dengan alias jalur akses Amazon S3
<a name="copy-usage_notes-s3-access-point-alias"></a>

COPY mendukung alias jalur akses Amazon S3. Untuk informasi selengkapnya, lihat [Menggunakan alias gaya ember untuk titik akses Anda di](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-points-alias.html) Panduan Pengguna Layanan Penyimpanan *Sederhana Amazon*.

# Memuat data multibyte dari Amazon S3
<a name="copy-usage_notes-multi-byte"></a>

Jika data Anda menyertakan karakter multibyte non-ASCII (seperti karakter Mandarin atau Sirilik), Anda harus memuat data ke kolom VARCHAR. Tipe data VARCHAR mendukung karakter UTF-8 empat byte, tetapi tipe data CHAR hanya menerima karakter ASCII single-byte. Anda tidak dapat memuat karakter lima byte atau lebih panjang ke dalam tabel Amazon Redshift. Untuk informasi selengkapnya, lihat [Karakter multibyte](c_Supported_data_types.md#c_Supported_data_types-multi-byte-characters). 

# Memuat kolom tipe data GEOMETRI atau GEOGRAFI
<a name="copy-usage_notes-spatial-data"></a>

Anda dapat MENYALIN ke `GEOMETRY` atau `GEOGRAPHY` kolom dari data dalam file teks yang dibatasi karakter, seperti file CSV. Data harus dalam bentuk heksadesimal dari format biner yang terkenal (baik WKB atau EWKB) atau format teks terkenal (baik WKT atau EWKT) dan sesuai dengan ukuran maksimum satu baris input ke perintah COPY. Untuk informasi selengkapnya, lihat [MENYONTEK](r_COPY.md). 

Untuk informasi tentang cara memuat dari shapefile, lihat. [Memuat shapefile ke Amazon Redshift](spatial-copy-shapefile.md)

Untuk informasi selengkapnya tentang `GEOMETRY` atau tipe `GEOGRAPHY` data, lihat[Menanyakan data spasial di Amazon Redshift](geospatial-overview.md).

# Memuat tipe data HLLSKETCH
<a name="copy-usage_notes-hll"></a>

Anda dapat menyalin sketsa HLL hanya dalam format jarang atau padat yang didukung oleh Amazon Redshift. Untuk menggunakan perintah COPY pada HyperLogLog sketsa, gunakan format Base64 untuk HyperLogLog sketsa padat dan format JSON untuk sketsa jarang. HyperLogLog Untuk informasi selengkapnya, lihat [HyperLogLog fungsi](hyperloglog-functions.md). 

Contoh berikut mengimpor data dari file CSV ke dalam tabel menggunakan CREATE TABLE dan COPY. Pertama, contoh membuat tabel `t1` menggunakan CREATE TABLE.

```
CREATE TABLE t1 (sketch hllsketch, a bigint);
```

Kemudian menggunakan COPY untuk mengimpor data dari file CSV ke dalam tabel`t1`. 

```
COPY t1 FROM s3://amzn-s3-demo-bucket/unload/' IAM_ROLE 'arn:aws:iam::0123456789012:role/MyRedshiftRole' NULL AS 'null' CSV;
```

# Memuat kolom tipe data VARBYTE
<a name="copy-usage-varbyte"></a>

Anda dapat memuat data dari file dalam format CSV, Parket, dan ORC. Untuk CSV, data dimuat dari file dalam representasi heksadesimal dari data VARBYTE. Anda tidak dapat memuat data VARBYTE dengan `FIXEDWIDTH` opsi. `REMOVEQUOTES`Opsi `ADDQUOTES` atau COPY tidak didukung. Kolom VARBYTE tidak dapat digunakan sebagai kolom partisi. 

# Kesalahan saat membaca banyak file
<a name="copy-usage_notes-multiple-files"></a>

Perintah COPY adalah atom dan transaksional. Dengan kata lain, bahkan ketika perintah COPY membaca data dari beberapa file, seluruh proses diperlakukan sebagai satu transaksi. Jika COPY mengalami kesalahan saat membaca file, COPY akan mencoba ulang secara otomatis hingga waktu proses habis (lihat[statement\$1timeout](r_statement_timeout.md)) atau jika data tidak dapat diunduh dari Amazon S3 untuk jangka waktu yang lama (antara 15 dan 30 menit), memastikan bahwa setiap file dimuat hanya sekali. Jika perintah COPY gagal, seluruh transaksi dibatalkan dan semua perubahan dibatalkan. Untuk informasi selengkapnya tentang penanganan error beban, lihat[Memecahkan masalah beban data](t_Troubleshooting_load_errors.md). 

Setelah perintah COPY berhasil dimulai, itu tidak gagal jika sesi berakhir, misalnya ketika klien terputus. Namun, jika perintah COPY berada dalam blok transaksi BEGIN... END yang tidak selesai karena sesi berakhir, seluruh transaksi, termasuk COPY, akan dibatalkan. Untuk informasi lebih lanjut tentang transaksi, lihat[MULAI](r_BEGIN.md).

# COPY dari format JSON
<a name="copy-usage_notes-copy-from-json"></a>

Struktur data JSON terdiri dari satu set objek atau array. *Objek* JSON dimulai dan diakhiri dengan tanda kurung gigi, dan berisi kumpulan pasangan nama-nilai yang tidak berurutan. Setiap nama dan nilai dipisahkan oleh titik dua, dan pasangan dipisahkan dengan koma. Namanya adalah string dalam tanda kutip ganda. Karakter tanda kutip harus berupa tanda kutip sederhana (0x22), bukan tanda kutip miring atau “pintar”. 

*Array* JSON dimulai dan diakhiri dengan tanda kurung, dan berisi kumpulan nilai yang diurutkan dipisahkan oleh koma. Nilai dapat berupa string dalam tanda kutip ganda, angka, Boolean benar atau salah, null, objek JSON, atau array. 

Objek dan array JSON dapat bersarang, memungkinkan struktur data hierarkis. Contoh berikut menunjukkan struktur data JSON dengan dua objek yang valid. 

```
{
    "id": 1006410,
    "title": "Amazon Redshift Database Developer Guide"
}
{
    "id": 100540,
    "name": "Amazon Simple Storage Service User Guide"
}
```

Berikut ini menunjukkan data yang sama dengan dua array JSON.

```
[
    1006410,
    "Amazon Redshift Database Developer Guide"
]
[
    100540,
    "Amazon Simple Storage Service User Guide"
]
```

## Opsi COPY untuk JSON
<a name="copy-usage-json-options"></a>

Anda dapat menentukan opsi berikut saat menggunakan COPY dengan data format JSON: 
+ `'auto' `— COPY secara otomatis memuat bidang dari file JSON. 
+ `'auto ignorecase'`— COPY secara otomatis memuat bidang dari file JSON sambil mengabaikan kasus nama bidang.
+ `s3://jsonpaths_file`— COPY menggunakan JSONPaths file untuk mengurai data sumber JSON. *JSONPaths File adalah file* teks yang berisi objek JSON tunggal dengan nama `"jsonpaths"` dipasangkan dengan array ekspresi. JSONPath Jika nama adalah string selain`"jsonpaths"`, COPY menggunakan `'auto'` argumen alih-alih menggunakan JSONPaths file. 

Untuk contoh yang menunjukkan cara memuat data menggunakan`'auto'`,`'auto ignorecase'`, atau JSONPaths file, dan menggunakan objek JSON atau array, lihat. [Salin dari contoh JSON](r_COPY_command_examples.md#r_COPY_command_examples-copy-from-json) 

## JSONPath pilihan
<a name="copy-usage-json-options"></a>

Dalam sintaks Amazon Redshift COPY, JSONPath ekspresi menentukan jalur eksplisit ke elemen nama tunggal dalam struktur data hierarkis JSON, menggunakan notasi braket atau notasi titik. Amazon Redshift tidak mendukung JSONPath elemen apa pun, seperti karakter wildcard atau ekspresi filter, yang mungkin diselesaikan ke jalur ambigu atau beberapa elemen nama. Akibatnya, Amazon Redshift tidak dapat mengurai struktur data multi-level yang kompleks.

Berikut ini adalah contoh JSONPaths file dengan JSONPath ekspresi menggunakan notasi braket. Tanda dolar (\$1) mewakili struktur tingkat akar. 

```
{
    "jsonpaths": [
       "$['id']",
       "$['store']['book']['title']",
	"$['location'][0]" 
    ]
}
```

 Pada contoh sebelumnya, `$['location'][0]` referensi elemen pertama dalam array. JSON menggunakan pengindeksan array berbasis nol. Indeks array harus bilangan bulat positif (lebih besar dari atau sama dengan nol).

Contoh berikut menunjukkan JSONPaths file sebelumnya menggunakan notasi titik. 

```
{
    "jsonpaths": [
       "$.id",
       "$.store.book.title",
	"$.location[0]"
    ]
}
```

Anda tidak dapat mencampur notasi braket dan notasi titik dalam array. `jsonpaths` Kurung dapat digunakan dalam notasi braket dan notasi titik untuk referensi elemen array. 

Saat menggunakan notasi titik, JSONPath ekspresi tidak dapat berisi karakter berikut: 
+ Tanda kutip lurus tunggal (') 
+ Periode, atau titik (.) 
+ Kurung ([]) kecuali digunakan untuk referensi elemen array 

Jika nilai dalam pasangan nama-nilai direferensikan oleh JSONPath ekspresi adalah objek atau array, seluruh objek atau array dimuat sebagai string, termasuk tanda kurung atau tanda kurung. Misalnya, misalkan data JSON Anda berisi objek berikut. 

```
{
    "id": 0,
    "guid": "84512477-fa49-456b-b407-581d0d851c3c",
    "isActive": true,
    "tags": [
        "nisi",
        "culpa",
        "ad",
        "amet",
        "voluptate",
        "reprehenderit",
        "veniam"
    ],
    "friends": [
        {
            "id": 0,
            "name": "Martha Rivera"
        },
        {
            "id": 1,
            "name": "Renaldo"
        }
    ]
}
```

 JSONPath Ekspresi `$['tags']` kemudian mengembalikan nilai berikut. 

```
"["nisi","culpa","ad","amet","voluptate","reprehenderit","veniam"]" 
```

 JSONPath Ekspresi `$['friends'][1]` kemudian mengembalikan nilai berikut. 

```
"{"id": 1,"name": "Renaldo"}" 
```

Setiap JSONPath ekspresi dalam `jsonpaths` array sesuai dengan satu kolom di tabel target Amazon Redshift. Urutan elemen `jsonpaths` array harus sesuai dengan urutan kolom dalam tabel target atau daftar kolom, jika daftar kolom digunakan. 

Untuk contoh yang menunjukkan cara memuat data menggunakan `'auto'` argumen atau JSONPaths file, dan menggunakan objek JSON atau array, lihat. [Salin dari contoh JSON](r_COPY_command_examples.md#r_COPY_command_examples-copy-from-json) 

Untuk informasi tentang cara menyalin beberapa file JSON, lihat[Menggunakan manifes untuk menentukan file data](loading-data-files-using-manifest.md).

## Karakter melarikan diri di JSON
<a name="copy-usage-json-escape-characters"></a>

COPY dimuat `\n` sebagai karakter baris baru dan dimuat `\t` sebagai karakter tab. Untuk memuat garis miring terbalik, lepaskan dengan garis miring terbalik (). `\\`

Misalnya, Anda memiliki JSON berikut dalam file bernama `escape.json` dalam ember`s3://amzn-s3-demo-bucket/json/`.

```
{
  "backslash": "This is a backslash: \\",
  "newline": "This sentence\n is on two lines.",
  "tab": "This sentence \t contains a tab."
}
```

Jalankan perintah berikut untuk membuat tabel ESCAPES dan memuat JSON.

```
create table escapes (backslash varchar(25), newline varchar(35), tab varchar(35));

copy escapes from 's3://amzn-s3-demo-bucket/json/escape.json' 
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
format as json 'auto';
```

Kueri tabel ESCAPES untuk melihat hasilnya.

```
select * from escapes;

       backslash        |      newline      |               tab
------------------------+-------------------+----------------------------------
 This is a backslash: \ | This sentence     | This sentence    contains a tab.
                        :  is on two lines.
(1 row)
```

## Hilangnya presisi numerik
<a name="copy-usage-json-rounding"></a>

Anda mungkin kehilangan presisi saat memuat angka dari file data dalam format JSON ke kolom yang didefinisikan sebagai tipe data numerik. Beberapa nilai floating point tidak terwakili persis dalam sistem komputer. Akibatnya, data yang Anda salin dari file JSON mungkin tidak dibulatkan seperti yang Anda harapkan. Untuk menghindari hilangnya presisi, kami sarankan menggunakan salah satu alternatif berikut:
+ Mewakili angka sebagai string dengan melampirkan nilai dalam karakter kutipan ganda.
+ Gunakan [ROUNDEC](copy-parameters-data-conversion.md#copy-roundec) untuk membulatkan angka alih-alih memotong.
+ Alih-alih menggunakan file JSON atau Avro, gunakan file teks CSV, dibatasi karakter, atau lebar tetap.

# COPY dari format data kolumnar
<a name="copy-usage_notes-copy-from-columnar"></a>

COPY dapat memuat data dari Amazon S3 dalam format kolumnar berikut:
+ ORC
+ Parquet

Untuk contoh menggunakan COPY dari format data kolumnar, lihat. [Contoh COPY](r_COPY_command_examples.md)

COPY mendukung data berformat kolom dengan pertimbangan berikut:
+ Bucket Amazon S3 harus berada di AWS Wilayah yang sama dengan database Amazon Redshift. 
+ *Untuk mengakses data Amazon S3 Anda melalui titik akhir VPC, siapkan akses menggunakan kebijakan IAM dan peran IAM seperti yang dijelaskan dalam Menggunakan Amazon Redshift Spectrum dengan Perutean [VPC yang Ditingkatkan dalam Panduan Manajemen Pergeseran Merah Amazon](https://docs.aws.amazon.com/redshift/latest/mgmt/spectrum-enhanced-vpc.html).* 
+ COPY tidak secara otomatis menerapkan pengkodean kompresi. 
+ Hanya parameter COPY berikut yang didukung: 
  + [TERIMA INVCHARS](copy-parameters-data-conversion.md#copy-acceptinvchars) saat menyalin dari file ORC atau Parket.
  + [FILLRECORD](copy-parameters-data-conversion.md#copy-fillrecord)
  + [DARI](copy-parameters-data-source-s3.md#copy-parameters-from)
  + [IAM\$1PERAN](copy-parameters-authorization.md#copy-iam-role)
  + [KREDENSIAL](copy-parameters-authorization.md#copy-credentials)
  + [STATUPDATE](copy-parameters-data-load.md#copy-statupdate)
  + [MANIFES](copy-parameters-data-source-s3.md#copy-manifest)
  + [EKSPLISIT\$1ID](copy-parameters-data-conversion.md#copy-explicit-ids)
+ Jika COPY mengalami kesalahan saat memuat, perintah gagal. ACCEPTANYDATE dan MAXERROR tidak didukung untuk tipe data kolumnar.
+ Pesan kesalahan dikirim ke klien SQL. Beberapa kesalahan dicatat di STL\$1LOAD\$1ERRORS dan STL\$1ERROR.
+ COPY menyisipkan nilai ke dalam kolom tabel target dalam urutan yang sama seperti kolom terjadi dalam file data kolumnar. Jumlah kolom dalam tabel target dan jumlah kolom dalam file data harus cocok.
+ Jika file yang Anda tentukan untuk operasi COPY mencakup salah satu ekstensi berikut, kami mendekompresi data tanpa perlu menambahkan parameter apa pun: 
  + `.gz`
  + `.snappy`
  + `.bz2`
+ SALIN dari format file Parket dan ORC menggunakan Redshift Spectrum dan akses bucket. Untuk menggunakan COPY untuk format ini, pastikan tidak ada kebijakan IAM yang memblokir penggunaan Amazon URLs S3 yang telah ditetapkan sebelumnya. Presigned URLs yang dihasilkan oleh Amazon Redshift berlaku selama 1 jam sehingga Amazon Redshift memiliki cukup waktu untuk memuat semua file dari bucket Amazon S3. URL presigned unik dihasilkan untuk setiap file yang dipindai oleh COPY dari format data kolumnar. Untuk kebijakan bucket yang menyertakan `s3:signatureAge` tindakan, pastikan untuk menetapkan nilainya setidaknya 3.600.000 milidetik. Untuk informasi selengkapnya, lihat [Menggunakan Amazon Redshift Spectrum dengan perutean VPC](https://docs.aws.amazon.com/redshift/latest/mgmt/spectrum-enhanced-vpc.html) yang disempurnakan.
+ Parameter REGION tidak didukung dengan COPY dari format data kolumnar. Bahkan jika bucket Amazon S3 dan database Anda sama Wilayah AWS, Anda dapat menemukan kesalahan, seperti, argumen REGION tidak didukung untuk COPY berbasis PARQUET.
+ COPY dari format kolumnar sekarang mendukung penskalaan konkurensi. Untuk mengaktifkan penskalaan konkurensi, lihat [Mengonfigurasi antrian penskalaan konkurensi](https://docs.aws.amazon.com/redshift/latest/dg/concurrency-scaling.html#concurrency-scaling-queues).

# string DATEFORMAT dan TIMEFORMAT
<a name="r_DATEFORMAT_and_TIMEFORMAT_strings"></a>

Perintah COPY menggunakan opsi DATEFORMAT dan TIMEFORMAT untuk mengurai nilai tanggal dan waktu dalam data sumber Anda. DATEFORMAT dan TIMEFORMAT adalah string yang diformat yang harus sesuai dengan format nilai tanggal dan waktu data sumber Anda. Misalnya, perintah COPY memuat data sumber dengan nilai tanggal `Jan-01-1999` harus menyertakan string DATEFORMAT berikut:

```
COPY ...
            DATEFORMAT AS 'MON-DD-YYYY'
```

Untuk informasi selengkapnya tentang mengelola konversi data COPY, lihat [Parameter konversi data](https://docs.aws.amazon.com/redshift/latest/dg/copy-parameters-data-conversion.html). 

String DATEFORMAT dan TIMEFORMAT dapat berisi pemisah datetime (seperti '', '`-`', atau '`/``:`'), serta format datepart dan timepart dalam tabel berikut.

**catatan**  
Jika Anda tidak dapat mencocokkan format nilai tanggal atau waktu dengan bagian tanggal dan waktu berikut, atau jika Anda memiliki nilai tanggal dan waktu yang menggunakan format yang berbeda satu sama lain, gunakan `'auto'` argumen dengan parameter DATEFORMAT atau TIMEFORMAT. `'auto'`Argumen mengenali beberapa format yang tidak didukung saat menggunakan string DATEFORMAT atau TIMEFORMAT. Untuk informasi selengkapnya, lihat [Menggunakan pengenalan otomatis dengan DATEFORMAT dan TIMEFORMAT](automatic-recognition.md).

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/redshift/latest/dg/r_DATEFORMAT_and_TIMEFORMAT_strings.html)

Format tanggal default adalah YYYY-MM-DD. Format stempel waktu default tanpa zona waktu (TIMESTAMP) adalah HH: MI: SS. YYYY-MM-DD Stempel waktu default dengan format zona waktu (TIMESTAMPTZ) adalah YYYY-MM-DD HH:MI:SSOF, di mana OF adalah offset dari UTC (misalnya, - 8:00. Anda tidak dapat menyertakan penentu zona waktu (TZ, tz, atau OF) di timeformat\$1string. Bidang detik (SS) juga mendukung detik pecahan hingga tingkat detail mikrodetik. Untuk memuat data TIMESTAMPTZ yang dalam format yang berbeda dari format default, tentukan 'otomatis'.

Berikut ini adalah beberapa contoh tanggal atau waktu yang dapat Anda temui dalam data sumber Anda, dan string DATEFORMAT atau TIMEFORMAT yang sesuai untuknya.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/redshift/latest/dg/r_DATEFORMAT_and_TIMEFORMAT_strings.html)

## Contoh
<a name="r_DATEFORMAT_and_TIMEFORMAT_strings-examples"></a>

Untuk contoh menggunakan TIMEFORMAT, lihat[Memuat stempel waktu atau datestamp](r_COPY_command_examples.md#r_COPY_command_examples-load-a-time-datestamp).

# Menggunakan pengenalan otomatis dengan DATEFORMAT dan TIMEFORMAT
<a name="automatic-recognition"></a>

Jika Anda menentukan `'auto'` sebagai argumen untuk parameter DATEFORMAT atau TIMEFORMAT, Amazon Redshift akan secara otomatis mengenali dan mengonversi format tanggal atau format waktu dalam data sumber Anda. Bagian berikut menunjukkan satu contoh.

```
copy favoritemovies from 'dynamodb://ProductCatalog' 
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
dateformat 'auto';
```

Ketika digunakan dengan `'auto'` argumen untuk DATEFORMAT dan TIMEFORMAT, COPY mengenali dan mengonversi format tanggal dan waktu yang tercantum dalam tabel di. [string DATEFORMAT dan TIMEFORMATContoh](r_DATEFORMAT_and_TIMEFORMAT_strings.md) Selain itu, `'auto'` argumen mengenali format berikut yang tidak didukung saat menggunakan string DATEFORMAT dan TIMEFORMAT.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/redshift/latest/dg/automatic-recognition.html)

Pengenalan otomatis tidak mendukung epochsec dan epochmillisecs.

Untuk menguji apakah nilai tanggal atau stempel waktu akan dikonversi secara otomatis, gunakan fungsi CAST untuk mencoba mengonversi string ke nilai tanggal atau stempel waktu. Misalnya, perintah berikut menguji nilai stempel waktu: `'J2345678 04:05:06.789'`

```
create table formattest (test char(21));
insert into formattest values('J2345678 04:05:06.789');
select test, cast(test as timestamp) as timestamp, cast(test as date) as date from formattest;

        test          |      timestamp      |	date
----------------------+---------------------+------------
J2345678 04:05:06.789   1710-02-23 04:05:06	1710-02-23
```

Jika data sumber untuk kolom DATE menyertakan informasi waktu, komponen waktu terpotong. Jika data sumber untuk kolom TIMESTAMP menghilangkan informasi waktu, 00:00:00 digunakan untuk komponen waktu.

# Contoh COPY
<a name="r_COPY_command_examples"></a>

**catatan**  
Contoh-contoh ini berisi jeda baris untuk keterbacaan. Jangan sertakan jeda baris atau spasi dalam string *credentials-args* Anda.

**Topics**
+ [Muat FAVORITEMOVIES dari tabel DynamoDB](#r_COPY_command_examples-load-favoritemovies-from-an-amazon-dynamodb-table)
+ [Muat LISTING dari bucket Amazon S3](#r_COPY_command_examples-load-listing-from-an-amazon-s3-bucket)
+ [Muat LISTING dari kluster EMR Amazon](#copy-command-examples-emr)
+ [Example: COPY from Amazon S3 using a manifest](#copy-command-examples-manifest)
+ [Muat LISTING dari file yang dibatasi pipa (pembatas default)](#r_COPY_command_examples-load-listing-from-a-pipe-delimited-file-default-delimiter)
+ [Muat LISTING menggunakan data kolumnar dalam format Parket](#r_COPY_command_examples-load-listing-from-parquet)
+ [Muat LISTING menggunakan data kolumnar dalam format ORC](#r_COPY_command_examples-load-listing-from-orc)
+ [Muat EVENT dengan opsi](#r_COPY_command_examples-load-event-with-options)
+ [Muat VENUE dari file data dengan lebar tetap](#r_COPY_command_examples-load-venue-from-a-fixed-width-data-file)
+ [Muat KATEGORI dari file CSV](#load-from-csv)
+ [Muat VENUE dengan nilai eksplisit untuk kolom IDENTITY](#r_COPY_command_examples-load-venue-with-explicit-values-for-an-identity-column)
+ [Muat WAKTU dari file GZIP yang dibatasi pipa](#r_COPY_command_examples-load-time-from-a-pipe-delimited-gzip-file)
+ [Memuat stempel waktu atau datestamp](#r_COPY_command_examples-load-a-time-datestamp)
+ [Memuat data dari file dengan nilai default](#r_COPY_command_examples-load-data-from-a-file-with-default-values)
+ [SALIN data dengan opsi ESCAPE](#r_COPY_command_examples-copy-data-with-the-escape-option)
+ [Salin dari contoh JSON](#r_COPY_command_examples-copy-from-json)
+ [Salin dari contoh Avro](#r_COPY_command_examples-copy-from-avro)
+ [Mempersiapkan file untuk COPY dengan opsi ESCAPE](#r_COPY_preparing_data)
+ [Memuat shapefile ke Amazon Redshift](#copy-example-spatial-copy-shapefile)
+ [COPY perintah dengan opsi NOLOAD](#r_COPY_command_examples-load-noload-option)
+ [Perintah COPY dengan pembatas multibyte dan opsi ENCODING](#r_COPY_command_examples-load-encoding-multibyte-delimiter-option)

## Muat FAVORITEMOVIES dari tabel DynamoDB
<a name="r_COPY_command_examples-load-favoritemovies-from-an-amazon-dynamodb-table"></a>

 AWS SDKs *Termasuk contoh sederhana membuat tabel DynamoDB yang disebut Movies.* (Untuk contoh ini, lihat [Memulai dengan DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GettingStarted.html).) Contoh berikut memuat tabel Amazon Redshift MOVIES dengan data dari tabel DynamoDB. Tabel Amazon Redshift harus sudah ada di database.

```
copy favoritemovies from 'dynamodb://Movies'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' 
readratio 50;
```

## Muat LISTING dari bucket Amazon S3
<a name="r_COPY_command_examples-load-listing-from-an-amazon-s3-bucket"></a>

Contoh berikut memuat LISTING dari bucket Amazon S3. Perintah COPY memuat semua file di `/data/listing/` folder.

```
copy listing
from 's3://amzn-s3-demo-bucket/data/listing/' 
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole';
```

## Muat LISTING dari kluster EMR Amazon
<a name="copy-command-examples-emr"></a>

Contoh berikut memuat tabel PENJUALAN dengan data yang dibatasi tab dari file terkompresi lzop di cluster EMR Amazon. COPY memuat setiap file di `myoutput/` folder yang dimulai dengan`part-`.

```
copy sales
from 'emr://j-SAMPLE2B500FC/myoutput/part-*' 
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
delimiter '\t' lzop;
```

Contoh berikut memuat tabel PENJUALAN dengan data yang diformat JSON di cluster EMR Amazon. COPY memuat setiap file di `myoutput/json/` folder.

```
copy sales
from 'emr://j-SAMPLE2B500FC/myoutput/json/' 
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
JSON 's3://amzn-s3-demo-bucket/jsonpaths.txt';
```

## Menggunakan manifes untuk menentukan file data
<a name="copy-command-examples-manifest"></a>

Anda dapat menggunakan manifes untuk memastikan bahwa perintah COPY memuat semua file yang diperlukan, dan hanya file yang diperlukan, dari Amazon S3. Anda juga dapat menggunakan manifes saat Anda perlu memuat beberapa file dari bucket atau file berbeda yang tidak memiliki awalan yang sama. 

Misalnya, anggaplah Anda perlu memuat tiga file berikut:`custdata1.txt`,`custdata2.txt`, dan`custdata3.txt`. Anda dapat menggunakan perintah berikut untuk memuat semua file `amzn-s3-demo-bucket` yang dimulai `custdata` dengan menentukan awalan: 

```
copy category
from 's3://amzn-s3-demo-bucket/custdata' 
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole';
```

Jika hanya dua file yang ada karena kesalahan, COPY hanya memuat dua file tersebut dan selesai dengan sukses, menghasilkan pemuatan data yang tidak lengkap. Jika bucket juga berisi file yang tidak diinginkan yang kebetulan menggunakan awalan yang sama, seperti file bernama `custdata.backup` misalnya, COPY memuat file itu juga, sehingga data yang tidak diinginkan dimuat.

Untuk memastikan bahwa semua file yang diperlukan dimuat dan untuk mencegah file yang tidak diinginkan dimuat, Anda dapat menggunakan file manifes. Manifes adalah file teks berformat JSON yang mencantumkan file yang akan diproses oleh perintah COPY. Misalnya, manifes berikut memuat tiga file dalam contoh sebelumnya.

```
{  
   "entries":[  
      {  
         "url":"s3://amzn-s3-demo-bucket/custdata.1",
         "mandatory":true
      },
      {  
         "url":"s3://amzn-s3-demo-bucket/custdata.2",
         "mandatory":true
      },
      {  
         "url":"s3://amzn-s3-demo-bucket/custdata.3",
         "mandatory":true
      }
   ]
}
```

`mandatory`Bendera opsional menunjukkan apakah COPY harus dihentikan jika file tidak ada. Nilai default-nya `false`. Terlepas dari pengaturan wajib, COPY berakhir jika tidak ada file yang ditemukan. Dalam contoh ini, COPY mengembalikan kesalahan jika salah satu file tidak ditemukan. File yang tidak diinginkan yang mungkin telah diambil jika Anda menetapkan hanya sebuah key prefix, seperti, diabaikan`custdata.backup`, karena mereka tidak berada di manifes. 

Saat memuat dari file data dalam format ORC atau Parket, `meta` bidang diperlukan, seperti yang ditunjukkan pada contoh berikut.

```
{  
   "entries":[  
      {  
         "url":"s3://amzn-s3-demo-bucket1/orc/2013-10-04-custdata",
         "mandatory":true,
         "meta":{  
            "content_length":99
         }
      },
      {  
         "url":"s3://amzn-s3-demo-bucket2/orc/2013-10-05-custdata",
         "mandatory":true,
         "meta":{  
            "content_length":99
         }
      }
   ]
}
```

Contoh berikut menggunakan manifes bernama`cust.manifest`. 

```
copy customer
from 's3://amzn-s3-demo-bucket/cust.manifest' 
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
format as orc
manifest;
```

Anda dapat menggunakan manifes untuk memuat file dari bucket atau file yang berbeda yang tidak memiliki awalan yang sama. Contoh berikut menunjukkan JSON untuk memuat data dengan file yang namanya dimulai dengan cap tanggal.

```
{
  "entries": [
    {"url":"s3://amzn-s3-demo-bucket/2013-10-04-custdata.txt","mandatory":true},
    {"url":"s3://amzn-s3-demo-bucket/2013-10-05-custdata.txt","mandatory":true},
    {"url":"s3://amzn-s3-demo-bucket/2013-10-06-custdata.txt","mandatory":true},
    {"url":"s3://amzn-s3-demo-bucket/2013-10-07-custdata.txt","mandatory":true}
  ]
}
```

Manifes dapat mencantumkan file yang ada di bucket yang berbeda, selama bucket berada di AWS Region yang sama dengan cluster. 

```
{
  "entries": [
    {"url":"s3://amzn-s3-demo-bucket1/custdata1.txt","mandatory":false},
    {"url":"s3://amzn-s3-demo-bucket2/custdata1.txt","mandatory":false},
    {"url":"s3://amzn-s3-demo-bucket2/custdata2.txt","mandatory":false}
  ]
}
```

## Muat LISTING dari file yang dibatasi pipa (pembatas default)
<a name="r_COPY_command_examples-load-listing-from-a-pipe-delimited-file-default-delimiter"></a>

Contoh berikut adalah kasus yang sangat sederhana di mana tidak ada opsi yang ditentukan dan file input berisi pembatas default, karakter pipa ('\$1'). 

```
copy listing 
from 's3://amzn-s3-demo-bucket/data/listings_pipe.txt' 
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole';
```

## Muat LISTING menggunakan data kolumnar dalam format Parket
<a name="r_COPY_command_examples-load-listing-from-parquet"></a>

Contoh berikut memuat data dari folder di Amazon S3 bernama parket. 

```
copy listing 
from 's3://amzn-s3-demo-bucket/data/listings/parquet/' 
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
format as parquet;
```

## Muat LISTING menggunakan data kolumnar dalam format ORC
<a name="r_COPY_command_examples-load-listing-from-orc"></a>

Contoh berikut memuat data dari folder di Amazon S3 bernama. `orc` 

```
copy listing 
from 's3://amzn-s3-demo-bucket/data/listings/orc/' 
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
format as orc;
```

## Muat EVENT dengan opsi
<a name="r_COPY_command_examples-load-event-with-options"></a>

Contoh berikut memuat data yang dibatasi pipa ke dalam tabel EVENT dan menerapkan aturan berikut: 
+ Jika pasangan tanda kutip digunakan untuk mengelilingi string karakter apa pun, mereka akan dihapus.
+ Baik string kosong dan string yang berisi kosong dimuat sebagai nilai NULL.
+ Beban gagal jika lebih dari 5 kesalahan dikembalikan.
+ Nilai stempel waktu harus sesuai dengan format yang ditentukan; misalnya, stempel waktu yang valid adalah. `2008-09-26 05:43:12`

```
copy event
from 's3://amzn-s3-demo-bucket/data/allevents_pipe.txt' 
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' 
removequotes
emptyasnull
blanksasnull
maxerror 5
delimiter '|'
timeformat 'YYYY-MM-DD HH:MI:SS';
```

## Muat VENUE dari file data dengan lebar tetap
<a name="r_COPY_command_examples-load-venue-from-a-fixed-width-data-file"></a>

```
copy venue
from 's3://amzn-s3-demo-bucket/data/venue_fw.txt' 
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
fixedwidth 'venueid:3,venuename:25,venuecity:12,venuestate:2,venueseats:6';
```

Contoh sebelumnya mengasumsikan file data yang diformat dengan cara yang sama seperti data sampel yang ditampilkan. Dalam contoh berikut, spasi bertindak sebagai placeholder sehingga semua kolom memiliki lebar yang sama seperti yang tercantum dalam spesifikasi: 

```
1  Toyota Park              Bridgeview  IL0
2  Columbus Crew Stadium    Columbus    OH0
3  RFK Stadium              Washington  DC0
4  CommunityAmerica BallparkKansas City KS0
5  Gillette Stadium         Foxborough  MA68756
```

## Muat KATEGORI dari file CSV
<a name="load-from-csv"></a>

Misalkan Anda ingin memuat KATEGORI dengan nilai yang ditunjukkan pada tabel berikut.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/redshift/latest/dg/r_COPY_command_examples.html)

Contoh berikut menunjukkan isi file teks dengan nilai bidang dipisahkan dengan koma.

```
12,Shows,Musicals,Musical theatre
13,Shows,Plays,All "non-musical" theatre  
14,Shows,Opera,All opera, light, and "rock" opera
15,Concerts,Classical,All symphony, concerto, and choir concerts
```

Jika Anda memuat file menggunakan parameter DELIMITER untuk menentukan input yang dibatasi koma, perintah COPY gagal karena beberapa kolom input berisi koma. Anda dapat menghindari masalah itu dengan menggunakan parameter CSV dan melampirkan bidang yang berisi koma dalam karakter tanda kutip. Jika karakter tanda kutip muncul dalam string yang dikutip, Anda harus menghindarinya dengan menggandakan karakter tanda kutip. Karakter tanda kutip default adalah tanda kutip ganda, jadi Anda harus keluar dari setiap tanda kutip ganda dengan tanda kutip ganda tambahan. File input baru Anda terlihat seperti ini. 

```
12,Shows,Musicals,Musical theatre
13,Shows,Plays,"All ""non-musical"" theatre"
14,Shows,Opera,"All opera, light, and ""rock"" opera"
15,Concerts,Classical,"All symphony, concerto, and choir concerts"
```

Dengan asumsi nama file`category_csv.txt`, Anda dapat memuat file dengan menggunakan perintah COPY berikut:

```
copy category
from 's3://amzn-s3-demo-bucket/data/category_csv.txt' 
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' 
csv;
```

Atau, untuk menghindari kebutuhan untuk menghindari tanda kutip ganda di input Anda, Anda dapat menentukan karakter tanda kutip yang berbeda dengan menggunakan parameter QUOTE AS. Misalnya, versi berikut `category_csv.txt` menggunakan '`%`' sebagai karakter tanda kutip.

```
12,Shows,Musicals,Musical theatre
13,Shows,Plays,%All "non-musical" theatre%
14,Shows,Opera,%All opera, light, and "rock" opera%
15,Concerts,Classical,%All symphony, concerto, and choir concerts%
```

Perintah COPY berikut menggunakan QUOTE AS untuk memuat`category_csv.txt`:

```
copy category
from 's3://amzn-s3-demo-bucket/data/category_csv.txt' 
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' 
csv quote as '%';
```

## Muat VENUE dengan nilai eksplisit untuk kolom IDENTITY
<a name="r_COPY_command_examples-load-venue-with-explicit-values-for-an-identity-column"></a>

Contoh berikut mengasumsikan bahwa ketika tabel VENUE dibuat bahwa setidaknya satu kolom (seperti `venueid` kolom) ditentukan untuk menjadi kolom IDENTITY. Perintah ini mengesampingkan perilaku IDENTITY default dari nilai autogenerating untuk kolom IDENTITY dan sebagai gantinya memuat nilai eksplisit dari file venue.txt. Amazon Redshift tidak memeriksa apakah nilai IDENTITAS duplikat dimuat ke dalam tabel saat menggunakan opsi EXLICIT\$1IDS. 

```
copy venue
from 's3://amzn-s3-demo-bucket/data/venue.txt' 
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
explicit_ids;
```

## Muat WAKTU dari file GZIP yang dibatasi pipa
<a name="r_COPY_command_examples-load-time-from-a-pipe-delimited-gzip-file"></a>

Contoh berikut memuat tabel TIME dari file GZIP yang dibatasi pipa:

```
copy time
from 's3://amzn-s3-demo-bucket/data/timerows.gz' 
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
gzip
delimiter '|';
```

## Memuat stempel waktu atau datestamp
<a name="r_COPY_command_examples-load-a-time-datestamp"></a>

Contoh berikut memuat data dengan stempel waktu yang diformat.

**catatan**  
TIMEFORMAT juga `HH:MI:SS` dapat mendukung detik pecahan di luar tingkat `SS` detail hingga mikrodetik. File yang `time.txt` digunakan dalam contoh ini berisi satu baris,`2009-01-12 14:15:57.119568`.

```
copy timestamp1 
from 's3://amzn-s3-demo-bucket/data/time.txt' 
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
timeformat 'YYYY-MM-DD HH:MI:SS';
```

Hasil dari salinan ini adalah sebagai berikut: 

```
select * from timestamp1;
c1
----------------------------
2009-01-12 14:15:57.119568
(1 row)
```

## Memuat data dari file dengan nilai default
<a name="r_COPY_command_examples-load-data-from-a-file-with-default-values"></a>

Contoh berikut menggunakan variasi tabel VENUE dalam database TICKIT. Pertimbangkan tabel VENUE\$1NEW yang didefinisikan dengan pernyataan berikut: 

```
create table venue_new(
venueid smallint not null,
venuename varchar(100) not null,
venuecity varchar(30),
venuestate char(2),
venueseats integer not null default '1000');
```

Pertimbangkan file data venue\$1noseats.txt yang tidak berisi nilai untuk kolom VENUESEATS, seperti yang ditunjukkan pada contoh berikut: 

```
1|Toyota Park|Bridgeview|IL|
2|Columbus Crew Stadium|Columbus|OH|
3|RFK Stadium|Washington|DC|
4|CommunityAmerica Ballpark|Kansas City|KS|
5|Gillette Stadium|Foxborough|MA|
6|New York Giants Stadium|East Rutherford|NJ|
7|BMO Field|Toronto|ON|
8|The Home Depot Center|Carson|CA|
9|Dick's Sporting Goods Park|Commerce City|CO|
10|Pizza Hut Park|Frisco|TX|
```

Pernyataan COPY berikut akan berhasil memuat tabel dari file dan menerapkan nilai DEFAULT ('1000') ke kolom yang dihilangkan: 

```
copy venue_new(venueid, venuename, venuecity, venuestate) 
from 's3://amzn-s3-demo-bucket/data/venue_noseats.txt' 
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
delimiter '|';
```

Sekarang lihat tabel yang dimuat: 

```
select * from venue_new order by venueid;
venueid |         venuename          |    venuecity    | venuestate | venueseats
---------+----------------------------+-----------------+------------+------------
1 | Toyota Park                | Bridgeview      | IL         |       1000
2 | Columbus Crew Stadium      | Columbus        | OH         |       1000
3 | RFK Stadium                | Washington      | DC         |       1000
4 | CommunityAmerica Ballpark  | Kansas City     | KS         |       1000
5 | Gillette Stadium           | Foxborough      | MA         |       1000
6 | New York Giants Stadium    | East Rutherford | NJ         |       1000
7 | BMO Field                  | Toronto         | ON         |       1000
8 | The Home Depot Center      | Carson          | CA         |       1000
9 | Dick's Sporting Goods Park | Commerce City   | CO         |       1000
10 | Pizza Hut Park             | Frisco          | TX         |       1000
(10 rows)
```

Untuk contoh berikut, selain mengasumsikan bahwa tidak ada data VENUESEATS yang disertakan dalam file, asumsikan juga bahwa tidak ada data VENUENAME yang disertakan: 

```
1||Bridgeview|IL|
2||Columbus|OH|
3||Washington|DC|
4||Kansas City|KS|
5||Foxborough|MA|
6||East Rutherford|NJ|
7||Toronto|ON|
8||Carson|CA|
9||Commerce City|CO|
10||Frisco|TX|
```

 Menggunakan definisi tabel yang sama, pernyataan COPY berikut gagal karena tidak ada nilai DEFAULT yang ditentukan untuk VENUENAME, dan VENUENAME adalah kolom NOT NULL: 

```
copy venue(venueid, venuecity, venuestate) 
from 's3://amzn-s3-demo-bucket/data/venue_pipe.txt' 
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
delimiter '|';
```

Sekarang pertimbangkan variasi tabel VENUE yang menggunakan kolom IDENTITY: 

```
create table venue_identity(
venueid int identity(1,1),
venuename varchar(100) not null,
venuecity varchar(30),
venuestate char(2),
venueseats integer not null default '1000');
```

Seperti contoh sebelumnya, asumsikan bahwa kolom VENUESEATS tidak memiliki nilai yang sesuai dalam file sumber. Pernyataan COPY berikut berhasil memuat tabel, termasuk nilai data IDENTITAS yang telah ditentukan sebelumnya, bukan membuat nilai tersebut secara otomatis: 

```
copy venue(venueid, venuename, venuecity, venuestate) 
from 's3://amzn-s3-demo-bucket/data/venue_pipe.txt' 
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
delimiter '|' explicit_ids;
```

Pernyataan ini gagal karena tidak menyertakan kolom IDENTITY (VENUEID hilang dari daftar kolom) namun menyertakan parameter EXPLICIT\$1IDS: 

```
copy venue(venuename, venuecity, venuestate) 
from 's3://amzn-s3-demo-bucket/data/venue_pipe.txt' 
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
delimiter '|' explicit_ids;
```

Pernyataan ini gagal karena tidak menyertakan parameter EXPLICIT\$1IDS: 

```
copy venue(venueid, venuename, venuecity, venuestate)
from 's3://amzn-s3-demo-bucket/data/venue_pipe.txt' 
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
delimiter '|';
```

## SALIN data dengan opsi ESCAPE
<a name="r_COPY_command_examples-copy-data-with-the-escape-option"></a>

Contoh berikut menunjukkan cara memuat karakter yang cocok dengan karakter pembatas (dalam hal ini, karakter pipa). Dalam file input, pastikan bahwa semua karakter pipa (\$1) yang ingin Anda muat lolos dengan karakter garis miring terbalik (\$1). Kemudian muat file dengan parameter ESCAPE. 

```
$ more redshiftinfo.txt
1|public\|event\|dwuser
2|public\|sales\|dwuser

create table redshiftinfo(infoid int,tableinfo varchar(50));

copy redshiftinfo from 's3://amzn-s3-demo-bucket/data/redshiftinfo.txt' 
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' 
delimiter '|' escape;

select * from redshiftinfo order by 1;
infoid |       tableinfo
-------+--------------------
1      | public|event|dwuser
2      | public|sales|dwuser
(2 rows)
```

Tanpa parameter ESCAPE, perintah COPY ini gagal dengan `Extra column(s) found` kesalahan.

**penting**  
Jika Anda memuat data Anda menggunakan COPY dengan parameter ESCAPE, Anda juga harus menentukan parameter ESCAPE dengan perintah UNLOAD Anda untuk menghasilkan file output timbal balik. Demikian pula, jika Anda BONGKAR menggunakan parameter ESCAPE, Anda perlu menggunakan ESCAPE saat Anda MENYALIN data yang sama.

## Salin dari contoh JSON
<a name="r_COPY_command_examples-copy-from-json"></a>

Dalam contoh berikut, Anda memuat tabel CATEGORY dengan data berikut. 

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/redshift/latest/dg/r_COPY_command_examples.html)

**Topics**
+ [Muat dari data JSON menggunakan opsi 'auto'](#copy-from-json-examples-using-auto)
+ [Muat dari data JSON menggunakan opsi 'auto ignorecase'](#copy-from-json-examples-using-auto-ignorecase)
+ [Muat dari data JSON menggunakan file JSONPaths](#copy-from-json-examples-using-jsonpaths)
+ [Muat dari array JSON menggunakan file JSONPaths](#copy-from-json-examples-using-jsonpaths-arrays)

### Muat dari data JSON menggunakan opsi 'auto'
<a name="copy-from-json-examples-using-auto"></a>

Untuk memuat dari data JSON menggunakan `'auto'` opsi, data JSON harus terdiri dari satu set objek. Nama kunci harus cocok dengan nama kolom, tetapi urutannya tidak masalah. Berikut ini menunjukkan isi dari sebuah file bernama`category_object_auto.json`.

```
{
    "catdesc": "Major League Baseball",
    "catid": 1,
    "catgroup": "Sports",
    "catname": "MLB"
}
{
    "catgroup": "Sports",
    "catid": 2,
    "catname": "NHL",
    "catdesc": "National Hockey League"
}
{
    "catid": 3,
    "catname": "NFL",
    "catgroup": "Sports",
    "catdesc": "National Football League"
}
{
    "bogus": "Bogus Sports LLC",
    "catid": 4,
    "catgroup": "Sports",
    "catname": "NBA",
    "catdesc": "National Basketball Association"
}
{
    "catid": 5,
    "catgroup": "Shows",
    "catname": "Musicals",
    "catdesc": "All symphony, concerto, and choir concerts"
}
```

Untuk memuat dari file data JSON dalam contoh sebelumnya, jalankan perintah COPY berikut.

```
copy category
from 's3://amzn-s3-demo-bucket/category_object_auto.json'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' 
json 'auto';
```

### Muat dari data JSON menggunakan opsi 'auto ignorecase'
<a name="copy-from-json-examples-using-auto-ignorecase"></a>

Untuk memuat dari data JSON menggunakan `'auto ignorecase'` opsi, data JSON harus terdiri dari satu set objek. Kasus nama kunci tidak harus cocok dengan nama kolom dan urutannya tidak masalah. Berikut ini menunjukkan isi dari sebuah file bernama`category_object_auto-ignorecase.json`.

```
{
    "CatDesc": "Major League Baseball",
    "CatID": 1,
    "CatGroup": "Sports",
    "CatName": "MLB"
}
{
    "CatGroup": "Sports",
    "CatID": 2,
    "CatName": "NHL",
    "CatDesc": "National Hockey League"
}
{
    "CatID": 3,
    "CatName": "NFL",
    "CatGroup": "Sports",
    "CatDesc": "National Football League"
}
{
    "bogus": "Bogus Sports LLC",
    "CatID": 4,
    "CatGroup": "Sports",
    "CatName": "NBA",
    "CatDesc": "National Basketball Association"
}
{
    "CatID": 5,
    "CatGroup": "Shows",
    "CatName": "Musicals",
    "CatDesc": "All symphony, concerto, and choir concerts"
}
```

Untuk memuat dari file data JSON dalam contoh sebelumnya, jalankan perintah COPY berikut.

```
copy category
from 's3://amzn-s3-demo-bucket/category_object_auto ignorecase.json'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' 
json 'auto ignorecase';
```

### Muat dari data JSON menggunakan file JSONPaths
<a name="copy-from-json-examples-using-jsonpaths"></a>

Jika objek data JSON tidak sesuai langsung dengan nama kolom, Anda dapat menggunakan JSONPaths file untuk memetakan elemen JSON ke kolom. Urutan tidak masalah dalam data sumber JSON, tetapi urutan ekspresi JSONPaths file harus sesuai dengan urutan kolom. Misalkan Anda memiliki file data berikut, bernama`category_object_paths.json`.

```
{
    "one": 1,
    "two": "Sports",
    "three": "MLB",
    "four": "Major League Baseball"
}
{
    "three": "NHL",
    "four": "National Hockey League",
    "one": 2,
    "two": "Sports"
}
{
    "two": "Sports",
    "three": "NFL",
    "one": 3,
    "four": "National Football League"
}
{
    "one": 4,
    "two": "Sports",
    "three": "NBA",
    "four": "National Basketball Association"
}
{
    "one": 6,
    "two": "Shows",
    "three": "Musicals",
    "four": "All symphony, concerto, and choir concerts"
}
```

 JSONPaths File berikut, bernama`category_jsonpath.json`, memetakan data sumber ke kolom tabel.

```
{
    "jsonpaths": [
        "$['one']",
        "$['two']",
        "$['three']",
        "$['four']"
    ]
}
```

Untuk memuat dari file data JSON dalam contoh sebelumnya, jalankan perintah COPY berikut.

```
copy category
from 's3://amzn-s3-demo-bucket/category_object_paths.json'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' 
json 's3://amzn-s3-demo-bucket/category_jsonpath.json';
```

### Muat dari array JSON menggunakan file JSONPaths
<a name="copy-from-json-examples-using-jsonpaths-arrays"></a>

Untuk memuat dari data JSON yang terdiri dari satu set array, Anda harus menggunakan JSONPaths file untuk memetakan elemen array ke kolom. Misalkan Anda memiliki file data berikut, bernama`category_array_data.json`.

```
[1,"Sports","MLB","Major League Baseball"]
[2,"Sports","NHL","National Hockey League"]
[3,"Sports","NFL","National Football League"]
[4,"Sports","NBA","National Basketball Association"]
[5,"Concerts","Classical","All symphony, concerto, and choir concerts"]
```

 JSONPaths File berikut, bernama`category_array_jsonpath.json`, memetakan data sumber ke kolom tabel.

```
{
    "jsonpaths": [
        "$[0]",
        "$[1]",
        "$[2]",
        "$[3]"
    ]
}
```

Untuk memuat dari file data JSON dalam contoh sebelumnya, jalankan perintah COPY berikut.

```
copy category
from 's3://amzn-s3-demo-bucket/category_array_data.json'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' 
json 's3://amzn-s3-demo-bucket/category_array_jsonpath.json';
```

## Salin dari contoh Avro
<a name="r_COPY_command_examples-copy-from-avro"></a>

Dalam contoh berikut, Anda memuat tabel CATEGORY dengan data berikut. 

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/redshift/latest/dg/r_COPY_command_examples.html)

**Topics**
+ [Muat dari data Avro menggunakan opsi 'auto'](#copy-from-avro-examples-using-auto)
+ [Muat dari data Avro menggunakan opsi 'auto ignorecase'](#copy-from-avro-examples-using-auto-ignorecase)
+ [Muat dari data Avro menggunakan file JSONPaths](#copy-from-avro-examples-using-avropaths)

### Muat dari data Avro menggunakan opsi 'auto'
<a name="copy-from-avro-examples-using-auto"></a>

Untuk memuat dari data Avro menggunakan `'auto'` argumen, nama bidang dalam skema Avro harus cocok dengan nama kolom. Saat menggunakan `'auto'` argumen, urutan tidak masalah. Berikut ini menunjukkan skema untuk file bernama`category_auto.avro`.

```
{
    "name": "category",
    "type": "record",
    "fields": [
        {"name": "catid", "type": "int"},
        {"name": "catdesc", "type": "string"},
        {"name": "catname", "type": "string"},
        {"name": "catgroup", "type": "string"},
}
```

Data dalam file Avro dalam format biner, jadi tidak dapat dibaca manusia. Berikut ini menunjukkan representasi JSON dari data dalam `category_auto.avro` file. 

```
{
   "catid": 1,
   "catdesc": "Major League Baseball",
   "catname": "MLB",
   "catgroup": "Sports"
}
{
   "catid": 2,
   "catdesc": "National Hockey League",
   "catname": "NHL",
   "catgroup": "Sports"
}
{
   "catid": 3,
   "catdesc": "National Basketball Association",
   "catname": "NBA",
   "catgroup": "Sports"
}
{
   "catid": 4,
   "catdesc": "All symphony, concerto, and choir concerts",
   "catname": "Classical",
   "catgroup": "Concerts"
}
```

Untuk memuat dari file data Avro pada contoh sebelumnya, jalankan perintah COPY berikut.

```
copy category
from 's3://amzn-s3-demo-bucket/category_auto.avro'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
format as avro 'auto';
```

### Muat dari data Avro menggunakan opsi 'auto ignorecase'
<a name="copy-from-avro-examples-using-auto-ignorecase"></a>

Untuk memuat dari data Avro menggunakan `'auto ignorecase'` argumen, kasus nama bidang dalam skema Avro tidak harus cocok dengan kasus nama kolom. Saat menggunakan `'auto ignorecase'` argumen, urutan tidak masalah. Berikut ini menunjukkan skema untuk file bernama`category_auto-ignorecase.avro`.

```
{
    "name": "category",
    "type": "record",
    "fields": [
        {"name": "CatID", "type": "int"},
        {"name": "CatDesc", "type": "string"},
        {"name": "CatName", "type": "string"},
        {"name": "CatGroup", "type": "string"},
}
```

Data dalam file Avro dalam format biner, jadi tidak dapat dibaca manusia. Berikut ini menunjukkan representasi JSON dari data dalam `category_auto-ignorecase.avro` file. 

```
{
   "CatID": 1,
   "CatDesc": "Major League Baseball",
   "CatName": "MLB",
   "CatGroup": "Sports"
}
{
   "CatID": 2,
   "CatDesc": "National Hockey League",
   "CatName": "NHL",
   "CatGroup": "Sports"
}
{
   "CatID": 3,
   "CatDesc": "National Basketball Association",
   "CatName": "NBA",
   "CatGroup": "Sports"
}
{
   "CatID": 4,
   "CatDesc": "All symphony, concerto, and choir concerts",
   "CatName": "Classical",
   "CatGroup": "Concerts"
}
```

Untuk memuat dari file data Avro pada contoh sebelumnya, jalankan perintah COPY berikut.

```
copy category
from 's3://amzn-s3-demo-bucket/category_auto-ignorecase.avro'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
format as avro 'auto ignorecase';
```

### Muat dari data Avro menggunakan file JSONPaths
<a name="copy-from-avro-examples-using-avropaths"></a>

Jika nama bidang dalam skema Avro tidak sesuai langsung dengan nama kolom, Anda dapat menggunakan JSONPaths file untuk memetakan elemen skema ke kolom. Urutan ekspresi JSONPaths file harus sesuai dengan urutan kolom. 

Misalkan Anda memiliki file data bernama `category_paths.avro` yang berisi data yang sama seperti pada contoh sebelumnya, tetapi dengan skema berikut.

```
{
    "name": "category",
    "type": "record",
    "fields": [
        {"name": "id", "type": "int"},
        {"name": "desc", "type": "string"},
        {"name": "name", "type": "string"},
        {"name": "group", "type": "string"},
        {"name": "region", "type": "string"} 
     ]
}
```

 JSONPaths File berikut, bernama`category_path.avropath`, memetakan data sumber ke kolom tabel.

```
{
    "jsonpaths": [
        "$['id']",
        "$['group']",
        "$['name']",
        "$['desc']"
    ]
}
```

Untuk memuat dari file data Avro pada contoh sebelumnya, jalankan perintah COPY berikut.

```
copy category
from 's3://amzn-s3-demo-bucket/category_object_paths.avro'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' 
format avro 's3://amzn-s3-demo-bucket/category_path.avropath ';
```

## Mempersiapkan file untuk COPY dengan opsi ESCAPE
<a name="r_COPY_preparing_data"></a>

Contoh berikut menjelaskan bagaimana Anda menyiapkan data untuk “melarikan diri” karakter baris baru sebelum mengimpor data ke dalam tabel Amazon Redshift menggunakan perintah COPY dengan parameter ESCAPE. Tanpa menyiapkan data untuk membatasi karakter baris baru, Amazon Redshift mengembalikan kesalahan pemuatan saat Anda menjalankan perintah COPY, karena karakter baris baru biasanya digunakan sebagai pemisah catatan. 

Misalnya, pertimbangkan file atau kolom dalam tabel eksternal yang ingin Anda salin ke tabel Amazon Redshift. Jika file atau kolom berisi konten berformat XML atau data serupa, Anda perlu memastikan bahwa semua karakter baris baru (\$1n) yang merupakan bagian dari konten diloloskan dengan karakter garis miring terbalik (\$1). 

File atau tabel yang berisi karakter baris baru yang disematkan memberikan pola yang relatif mudah untuk dicocokkan. Setiap karakter baris baru yang disematkan kemungkinan besar selalu mengikuti `>` karakter dengan potensi beberapa karakter spasi putih (`' '`atau tab) di antaranya, seperti yang dapat Anda lihat dalam contoh file teks bernama `nlTest1.txt` berikut. 

```
$ cat nlTest1.txt
<xml start>
<newline characters provide>
<line breaks at the end of each>
<line in content>
</xml>|1000
<xml>
</xml>|2000
```

Dengan contoh berikut, Anda dapat menjalankan utilitas pemrosesan teks untuk pra-proses file sumber dan menyisipkan karakter escape jika diperlukan. (`|`Karakter dimaksudkan untuk digunakan sebagai pembatas untuk memisahkan data kolom saat disalin ke tabel Amazon Redshift.) 

```
$ sed -e ':a;N;$!ba;s/>[[:space:]]*\n/>\\\n/g' nlTest1.txt > nlTest2.txt
```

Demikian pula, Anda dapat menggunakan Perl untuk melakukan operasi serupa: 

```
cat nlTest1.txt | perl -p -e 's/>\s*\n/>\\\n/g' > nlTest2.txt
```

Untuk mengakomodasi pemuatan data dari `nlTest2.txt` file ke Amazon Redshift, kami membuat tabel dua kolom di Amazon Redshift. Kolom pertama c1, adalah kolom karakter yang menyimpan konten berformat XML dari file. `nlTest2.txt` Kolom kedua c2 memegang nilai integer dimuat dari file yang sama. 

Setelah menjalankan `sed` perintah, Anda dapat memuat data dengan benar dari `nlTest2.txt` file ke tabel Amazon Redshift menggunakan parameter ESCAPE. 

**catatan**  
Ketika Anda menyertakan parameter ESCAPE dengan perintah COPY, ia lolos dari sejumlah karakter khusus yang menyertakan karakter garis miring terbalik (termasuk baris baru). 

```
copy t2 from 's3://amzn-s3-demo-bucket/data/nlTest2.txt' 
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'  
escape
delimiter as '|';

select * from t2 order by 2;

c1           |  c2
-------------+------
<xml start>
<newline characters provide>
<line breaks at the end of each>
<line in content>
</xml>
| 1000
<xml>
</xml>       | 2000
(2 rows)
```

Anda dapat menyiapkan file data yang diekspor dari database eksternal dengan cara yang sama. Misalnya, dengan database Oracle, Anda dapat menggunakan fungsi REPLACE pada setiap kolom yang terpengaruh dalam tabel yang ingin Anda salin ke Amazon Redshift. 

```
SELECT c1, REPLACE(c2, \n',\\n' ) as c2 from my_table_with_xml
```

Selain itu, banyak alat ekspor dan ekstrak basis data, transformasi, muat (ETL) yang secara rutin memproses sejumlah besar data menyediakan opsi untuk menentukan karakter escape dan delimiter. 

## Memuat shapefile ke Amazon Redshift
<a name="copy-example-spatial-copy-shapefile"></a>

Contoh berikut menunjukkan cara memuat shapefile Esri menggunakan COPY. Untuk informasi selengkapnya tentang memuat shapefile, lihat. [Memuat shapefile ke Amazon Redshift](spatial-copy-shapefile.md) 

### Memuat shapefile
<a name="copy-example-spatial-copy-shapefile-loading-copy"></a>

Langkah-langkah berikut menunjukkan cara menelan OpenStreetMap data dari Amazon S3 menggunakan perintah COPY. Contoh ini mengasumsikan bahwa arsip shapefile Norwegia dari [situs unduhan Geofabrik](https://download.geofabrik.de/europe.html) telah diunggah ke bucket Amazon S3 pribadi di Wilayah Anda. AWS `.dbf`File`.shp`,`.shx`, dan harus berbagi awalan dan nama file Amazon S3 yang sama.

#### Menelan data tanpa penyederhanaan
<a name="spatial-copy-shapefile-loading-copy-fits"></a>

Perintah berikut membuat tabel dan menelan data yang dapat muat dalam ukuran geometri maksimum tanpa penyederhanaan apa pun. Buka perangkat `gis_osm_natural_free_1.shp` lunak GIS pilihan Anda dan periksa kolom di lapisan ini. Secara default, kolom IDENTITAS atau GEOMETRI adalah yang pertama. Ketika kolom GEOMETRI pertama, Anda dapat membuat tabel seperti yang ditunjukkan berikut.

```
CREATE TABLE norway_natural (
   wkb_geometry GEOMETRY,
   osm_id BIGINT,
   code INT,
   fclass VARCHAR,
   name VARCHAR);
```

Atau, ketika kolom IDENTITY pertama, Anda dapat membuat tabel seperti yang ditunjukkan berikut.

```
CREATE TABLE norway_natural_with_id (
   fid INT IDENTITY(1,1),
   wkb_geometry GEOMETRY,
   osm_id BIGINT,
   code INT,
   fclass VARCHAR,
   name VARCHAR);
```

Sekarang Anda dapat menelan data menggunakan COPY.

```
COPY norway_natural FROM 's3://bucket_name/shapefiles/norway/gis_osm_natural_free_1.shp'
FORMAT SHAPEFILE
CREDENTIALS 'aws_iam_role=arn:aws:iam::123456789012:role/MyRoleName';
INFO: Load into table 'norway_natural' completed, 83891 record(s) loaded successfully
```

Atau Anda dapat menelan data seperti yang ditunjukkan berikut. 

```
COPY norway_natural_with_id FROM 's3://bucket_name/shapefiles/norway/gis_osm_natural_free_1.shp'
FORMAT SHAPEFILE
CREDENTIALS 'aws_iam_role=arn:aws:iam::123456789012:role/MyRoleName';
INFO: Load into table 'norway_natural_with_id' completed, 83891 record(s) loaded successfully.
```

#### Menelan data dengan penyederhanaan
<a name="spatial-copy-shapefile-loading-copy-no-fit"></a>

Perintah berikut membuat tabel dan mencoba untuk menelan data yang tidak dapat muat dalam ukuran geometri maksimum tanpa penyederhanaan apa pun. Periksa `gis_osm_water_a_free_1.shp` shapefile dan buat tabel yang sesuai seperti yang ditunjukkan berikut.

```
CREATE TABLE norway_water (
   wkb_geometry GEOMETRY,
   osm_id BIGINT,
   code INT,
   fclass VARCHAR,
   name VARCHAR);
```

Ketika perintah COPY berjalan, itu menghasilkan kesalahan.

```
COPY norway_water FROM 's3://bucket_name/shapefiles/norway/gis_osm_water_a_free_1.shp'
FORMAT SHAPEFILE
CREDENTIALS 'aws_iam_role=arn:aws:iam::123456789012:role/MyRoleName';
ERROR:  Load into table 'norway_water' failed.  Check 'stl_load_errors' system table for details.
```

Query `STL_LOAD_ERRORS` menunjukkan bahwa geometri terlalu besar. 

```
SELECT line_number, btrim(colname), btrim(err_reason) FROM stl_load_errors WHERE query = pg_last_copy_id();
 line_number |    btrim     |                                 btrim
-------------+--------------+-----------------------------------------------------------------------
     1184705 | wkb_geometry | Geometry size: 1513736 is larger than maximum supported size: 1048447
```

Untuk mengatasinya, `SIMPLIFY AUTO` parameter ditambahkan ke perintah COPY untuk menyederhanakan geometri.

```
COPY norway_water FROM 's3://bucket_name/shapefiles/norway/gis_osm_water_a_free_1.shp'
FORMAT SHAPEFILE
SIMPLIFY AUTO
CREDENTIALS 'aws_iam_role=arn:aws:iam::123456789012:role/MyRoleName';

INFO:  Load into table 'norway_water' completed, 1989196 record(s) loaded successfully.
```

Untuk melihat baris dan geometri yang disederhanakan, kueri`SVL_SPATIAL_SIMPLIFY`.

```
SELECT * FROM svl_spatial_simplify WHERE query = pg_last_copy_id();
 query | line_number | maximum_tolerance | initial_size | simplified | final_size |   final_tolerance
-------+-------------+-------------------+--------------+------------+------------+----------------------
    20 |     1184704 |                -1 |      1513736 | t          |    1008808 |   1.276386653895e-05
    20 |     1664115 |                -1 |      1233456 | t          |    1023584 | 6.11707814796635e-06
```

Menggunakan SIMPLIFY AUTO *max\$1tolerance* dengan toleransi yang lebih rendah dari yang dihitung secara otomatis mungkin menghasilkan kesalahan konsumsi. Dalam hal ini, gunakan MAXERROR untuk mengabaikan kesalahan.

```
COPY norway_water FROM 's3://bucket_name/shapefiles/norway/gis_osm_water_a_free_1.shp'
FORMAT SHAPEFILE
SIMPLIFY AUTO 1.1E-05
MAXERROR 2
CREDENTIALS 'aws_iam_role=arn:aws:iam::123456789012:role/MyRoleName';

INFO:  Load into table 'norway_water' completed, 1989195 record(s) loaded successfully.
INFO:  Load into table 'norway_water' completed, 1 record(s) could not be loaded.  Check 'stl_load_errors' system table for details.
```

Kueri `SVL_SPATIAL_SIMPLIFY` lagi untuk mengidentifikasi catatan yang tidak berhasil dimuat COPY.

```
SELECT * FROM svl_spatial_simplify WHERE query = pg_last_copy_id();
 query | line_number | maximum_tolerance | initial_size | simplified | final_size | final_tolerance
-------+-------------+-------------------+--------------+------------+------------+-----------------
    29 |     1184704 |           1.1e-05 |      1513736 | f          |          0 |               0
    29 |     1664115 |           1.1e-05 |      1233456 | t          |     794432 |         1.1e-05
```

Dalam contoh ini, rekaman pertama tidak berhasil cocok, sehingga `simplified` kolom menunjukkan false. Rekor kedua dimuat dalam toleransi yang diberikan. Namun, ukuran akhir lebih besar daripada menggunakan toleransi yang dihitung secara otomatis tanpa menentukan toleransi maksimum. 

### Memuat dari shapefile terkompresi
<a name="copy-example-spatial-copy-shapefile-compressed"></a>

Amazon Redshift COPY mendukung pengambilan data dari shapefile terkompresi. Semua komponen shapefile harus memiliki awalan Amazon S3 yang sama dan akhiran kompresi yang sama. Sebagai contoh, misalkan Anda ingin memuat data dari contoh sebelumnya. Dalam hal ini, file`gis_osm_water_a_free_1.shp.gz`,`gis_osm_water_a_free_1.dbf.gz`, dan `gis_osm_water_a_free_1.shx.gz` harus berbagi direktori Amazon S3 yang sama. Perintah COPY memerlukan opsi GZIP, dan klausa FROM harus menentukan file terkompresi yang benar, seperti yang ditunjukkan berikut.

```
COPY norway_natural FROM 's3://bucket_name/shapefiles/norway/compressed/gis_osm_natural_free_1.shp.gz'
FORMAT SHAPEFILE
GZIP
CREDENTIALS 'aws_iam_role=arn:aws:iam::123456789012:role/MyRoleName';
INFO:  Load into table 'norway_natural' completed, 83891 record(s) loaded successfully.
```

### Memuat data ke dalam tabel dengan urutan kolom yang berbeda
<a name="copy-example-spatial-copy-shapefile-column-order"></a>

Jika Anda memiliki tabel yang tidak memiliki `GEOMETRY` kolom pertama, Anda dapat menggunakan pemetaan kolom untuk memetakan kolom ke tabel target. Misalnya, buat tabel dengan `osm_id` ditentukan sebagai kolom pertama.

```
CREATE TABLE norway_natural_order (
   osm_id BIGINT,
   wkb_geometry GEOMETRY,
   code INT,
   fclass VARCHAR,
   name VARCHAR);
```

Kemudian menelan shapefile menggunakan pemetaan kolom.

```
COPY norway_natural_order(wkb_geometry, osm_id, code, fclass, name) 
FROM 's3://bucket_name/shapefiles/norway/gis_osm_natural_free_1.shp'
FORMAT SHAPEFILE
CREDENTIALS 'aws_iam_role=arn:aws:iam::123456789012:role/MyRoleName';
INFO:  Load into table 'norway_natural_order' completed, 83891 record(s) loaded successfully.
```

### Memuat data ke dalam tabel dengan kolom geografi
<a name="copy-example-spatial-copy-shapefile-geography"></a>

Jika Anda memiliki tabel yang memiliki `GEOGRAPHY` kolom, pertama-tama Anda menelan ke dalam `GEOMETRY` kolom dan kemudian melemparkan objek ke `GEOGRAPHY` objek. Misalnya, setelah Anda menyalin shapefile Anda ke `GEOMETRY` kolom, ubah tabel untuk menambahkan kolom tipe data. `GEOGRAPHY`

```
ALTER TABLE norway_natural ADD COLUMN wkb_geography GEOGRAPHY;
```

Kemudian ubah geometri menjadi geografi.

```
UPDATE norway_natural SET wkb_geography = wkb_geometry::geography;
```

Secara opsional, Anda dapat menjatuhkan `GEOMETRY` kolom.

```
ALTER TABLE norway_natural DROP COLUMN wkb_geometry;
```

## COPY perintah dengan opsi NOLOAD
<a name="r_COPY_command_examples-load-noload-option"></a>

Untuk memvalidasi file data sebelum Anda benar-benar memuat data, gunakan opsi NOLOAD dengan perintah COPY. Amazon Redshift mem-parsing file input dan menampilkan kesalahan yang terjadi. Contoh berikut menggunakan opsi NOLOAD dan tidak ada baris yang benar-benar dimuat ke dalam tabel.

```
COPY public.zipcode1
FROM 's3://amzn-s3-demo-bucket/mydata/zipcode.csv' 
DELIMITER ';' 
IGNOREHEADER 1 REGION 'us-east-1'
NOLOAD
CREDENTIALS 'aws_iam_role=arn:aws:iam::123456789012:role/myRedshiftRole';

Warnings:
Load into table 'zipcode1' completed, 0 record(s) loaded successfully.
```

## Perintah COPY dengan pembatas multibyte dan opsi ENCODING
<a name="r_COPY_command_examples-load-encoding-multibyte-delimiter-option"></a>

Contoh berikut dimuat LATIN1 dari file Amazon S3 yang berisi data multibyte. Perintah COPY menentukan pembatas dalam bentuk oktal `\302\246\303\254` untuk memisahkan bidang dalam file input yang dikodekan sebagai ISO-8859-1. Untuk menentukan pembatas yang sama di UTF-8, tentukan. `DELIMITER '¦ì'`

```
COPY latin1
FROM 's3://amzn-s3-demo-bucket/multibyte/myfile' 
IAM_ROLE 'arn:aws:iam::123456789012:role/myRedshiftRole'
DELIMITER '\302\246\303\254'
ENCODING ISO88591
```