

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

# Memuat data ke klaster DB Amazon Aurora MySQL dari file teks di bucket Amazon S3
<a name="AuroraMySQL.Integrating.LoadFromS3"></a><a name="load_from_s3"></a><a name="load_data"></a><a name="load_xml"></a>

Anda dapat menggunakan pernyataan `LOAD DATA FROM S3` atau `LOAD XML FROM S3` untuk memuat data dari file yang tersimpan di bucket Amazon S3. Di Aurora MySQL, file pertama kali disimpan di disk lokal, dan kemudian diimpor ke database. Setelah impor ke database selesai, file lokal dihapus.

**catatan**  
Memuat data ke dalam tabel dari file teks tidak didukung untuk Aurora Serverless v1. Hal ini didukung untuk Aurora Serverless v2.

**Contents**
+ [Memberi Aurora akses ke Amazon S3](#AuroraMySQL.Integrating.LoadFromS3.Authorize)
+ [Memberikan hak akses untuk memuat data di Amazon Aurora MySQL](#AuroraMySQL.Integrating.LoadFromS3.Grant)
+ [Menentukan jalur (URI) ke bucket Amazon S3](#AuroraMySQL.Integrating.LoadFromS3.URI)
+ [LOAD DATA FROM S3](#AuroraMySQL.Integrating.LoadFromS3.Text)
  + [Sintaksis](#AuroraMySQL.Integrating.LoadFromS3.Text.Syntax)
  + [Parameter](#AuroraMySQL.Integrating.LoadFromS3.Text.Parameters)
  + [Menggunakan manifes untuk menentukan file data yang akan dimuat](#AuroraMySQL.Integrating.LoadFromS3.Manifest)
    + [Memverifikasi file yang dimuat menggunakan tabel aurora\$1s3\$1load\$1history](#AuroraMySQL.Integrating.LoadFromS3.Manifest.History)
  + [Contoh](#AuroraMySQL.Integrating.LoadFromS3.Text.Examples)
+ [LOAD XML FROM S3](#AuroraMySQL.Integrating.LoadFromS3.XML)
  + [Sintaksis](#AuroraMySQL.Integrating.LoadFromS3.XML.Syntax)
  + [Parameter](#AuroraMySQL.Integrating.LoadFromS3.XML.Parameters)

## Memberi Aurora akses ke Amazon S3
<a name="AuroraMySQL.Integrating.LoadFromS3.Authorize"></a>

Sebelum Anda dapat memuat data dari bucket Amazon S3, Anda harus terlebih dahulu memberi klaster DB Aurora MySQL Anda izin untuk mengakses Amazon S3.

**Untuk memberi Aurora MySQL akses ke Amazon S3**

1. Buat kebijakan AWS Identity and Access Management (IAM) yang menyediakan izin bucket dan objek yang memungkinkan klaster DB MySQL Aurora Anda mengakses Amazon S3. Untuk petunjuk, lihat [Membuat kebijakan IAM untuk mengakses sumber daya Amazon S3](AuroraMySQL.Integrating.Authorizing.IAM.S3CreatePolicy.md).
**catatan**  
Di Aurora MySQL versi 3.05 dan lebih tinggi, Anda dapat memuat objek yang dienkripsi menggunakan AWS KMS keys terkelola pelanggan. Untuk melakukannya, sertakan izin `kms:Decrypt` dalam kebijakan IAM Anda. Untuk informasi selengkapnya, lihat [Membuat kebijakan IAM untuk mengakses sumber daya AWS KMS](AuroraMySQL.Integrating.Authorizing.IAM.KMSCreatePolicy.md).  
Anda tidak memerlukan izin ini untuk memuat objek yang dienkripsi menggunakan Kunci yang dikelola AWS atau kunci terkelola Amazon S3 (SSE-S3).

1. Buat peran IAM, lalu lampirkan kebijakan IAM yang Anda buat di [Membuat kebijakan IAM untuk mengakses sumber daya Amazon S3](AuroraMySQL.Integrating.Authorizing.IAM.S3CreatePolicy.md) ke peran IAM baru. Untuk petunjuk, lihat [Membuat peran IAM untuk memungkinkan Amazon Aurora mengakses layanan AWS](AuroraMySQL.Integrating.Authorizing.IAM.CreateRole.md).

1. Pastikan klaster DB menggunakan grup parameter klaster DB kustom.

   Untuk informasi selengkapnya tentang membuat grup parameter klaster DB kustom, lihat [Membuat grup parameter cluster DB di Amazon Aurora](USER_WorkingWithParamGroups.CreatingCluster.md).

1. Untuk Aurora MySQL versi 2, atur parameter klaster DB `aurora_load_from_s3_role` atau `aws_default_s3_role` ke Amazon Resource Name (ARN) milik peran IAM yang baru. Jika peran IAM tidak ditentukan untuk `aurora_load_from_s3_role`, Aurora menggunakan peran IAM yang ditentukan dalam `aws_default_s3_role`.

   Untuk Aurora MySQL versi 3, gunakan `aws_default_s3_role`.

   Jika klaster adalah bagian dari basis data global Aurora, atur parameter ini untuk setiap klaster Aurora dalam basis data global. Meskipun hanya klaster primer dalam basis data global Aurora yang dapat memuat data, klaster lain mungkin dipromosikan oleh mekanisme failover dan menjadi klaster primer.

   Untuk informasi selengkapnya tentang parameter klaster DB, lihat [Parameter klaster DB dan instans DB Amazon Aurora](USER_WorkingWithDBClusterParamGroups.md#Aurora.Managing.ParameterGroups).

1. Untuk mengizinkan pengguna basis data dalam klaster DB Aurora MySQL untuk mengakses Amazon S3, kaitkan peran yang Anda buat di [Membuat peran IAM untuk memungkinkan Amazon Aurora mengakses layanan AWS](AuroraMySQL.Integrating.Authorizing.IAM.CreateRole.md) dengan klaster DB. Untuk basis data global Aurora, kaitkan peran dengan setiap klaster Aurora di basis data global. Untuk informasi tentang mengaitkan peran IAM dengan klaster DB, lihat [Mengaitkan peran IAM dengan klaster DB Amazon Aurora MySQL](AuroraMySQL.Integrating.Authorizing.IAM.AddRoleToDBCluster.md).

1. Konfigurasikan klaster DB Aurora MySQL Anda untuk memungkinkan koneksi keluar ke Amazon S3. Untuk petunjuk, lihat [Mengaktifkan komunikasi jaringan dari Amazon Aurora ke layanan lain AWS](AuroraMySQL.Integrating.Authorizing.Network.md). 

   Jika klaster DB Anda tidak dapat diakses publik dan berada di subnet publik VPC, berarti klaster DB Anda bersifat privat. Anda dapat membuat titik akhir gateway S3 untuk mengakses bucket S3 Anda. Untuk informasi selengkapnya, lihat [Titik akhir gateway untuk Amazon S3](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-s3.html).

    Untuk basis data global Aurora, aktifkan koneksi keluar untuk setiap klaster Aurora di basis data global. 

## Memberikan hak akses untuk memuat data di Amazon Aurora MySQL
<a name="AuroraMySQL.Integrating.LoadFromS3.Grant"></a>

Pengguna basis data yang mengeluarkan pernyataan `LOAD XML FROM S3` atau `LOAD DATA FROM S3` harus memiliki peran atau hak akses tertentu untuk mengeluarkan pernyataan. Di Aurora MySQL versi 3, Anda memberikan peran `AWS_LOAD_S3_ACCESS`. Di Aurora MySQL versi 2, Anda memberikan hak akses `LOAD FROM S3`. Pengguna administratif untuk klaster DB akan diberi peran atau hak akses yang sesuai secara default. Anda dapat memberikan hak akses kepada pengguna lain dengan menggunakan salah satu pernyataan berikut.

 Gunakan pernyataan berikut untuk Aurora MySQL versi 3: 

```
GRANT AWS_LOAD_S3_ACCESS TO 'user'@'domain-or-ip-address'
```

**Tip**  
Saat Anda menggunakan teknik peran di Aurora MySQL versi 3, Anda juga dapat mengaktifkan peran dengan menggunakan pernyataan `SET ROLE role_name` atau `SET ROLE ALL`. Jika Anda tidak memahami sistem peran MySQL 8.0, Anda dapat mempelajari selengkapnya dalam [Model hak akses berbasis peran](AuroraMySQL.Compare-80-v3.md#AuroraMySQL.privilege-model). Untuk detail selengkapnya, lihat [Menggunakan peran](https://dev.mysql.com/doc/refman/8.0/en/roles.html) dalam Manual *Referensi MySQL*.  
Hal ini hanya berlaku untuk sesi aktif saat ini. Ketika Anda terhubung kembali, Anda harus menjalankan `SET ROLE` pernyataan lagi untuk memberikan hak istimewa. Untuk informasi selengkapnya, lihat [SET ROLE statement](https://dev.mysql.com/doc/refman/8.0/en/set-role.html) dalam *Panduan Referensi MySQL*.  
Anda dapat menggunakan parameter klaster DB `activate_all_roles_on_login` untuk mengaktifkan semua peran secara otomatis saat pengguna terhubung ke instans DB. Ketika parameter ini disetel, Anda biasanya tidak perlu memanggil `SET ROLE` pernyataan secara eksplisit untuk mengaktifkan peran. Untuk informasi selengkapnya, lihat [activate\$1all\$1roles\$1on\$1login](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_activate_all_roles_on_login) dalam *Panduan Referensi MySQL*.  
Namun, Anda harus memanggil secara `SET ROLE ALL` eksplisit di awal prosedur tersimpan untuk mengaktifkan peran, ketika prosedur yang disimpan dipanggil oleh pengguna yang berbeda.

Gunakan pernyataan berikut untuk Aurora MySQL versi 2:

```
GRANT LOAD FROM S3 ON *.* TO 'user'@'domain-or-ip-address'
```

Peran `AWS_LOAD_S3_ACCESS` dan hak akses `LOAD FROM S3` dikhususkan untuk Amazon Aurora dan tidak tersedia untuk basis data MySQL eksternal atau instans DB RDS for MySQL. Jika Anda telah menyiapkan replikasi antara cluster Aurora DB sebagai sumber replikasi dan database MySQL sebagai klien replikasi, maka `GRANT` pernyataan untuk peran atau hak istimewa menyebabkan replikasi berhenti dengan kesalahan. Anda dapat melewati kesalahan ini dengan aman untuk melanjutkan replikasi. Untuk melewati kesalahan pada instans RDS for MySQL, gunakan prosedur [mysql\$1rds\$1skip\$1repl\$1error](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/mysql_rds_skip_repl_error.html). Untuk melewati kesalahan pada basis data MySQL eksternal, gunakan variabel sistem [slave\$1skip\$1errors](https://dev.mysql.com/doc/refman/5.7/en/replication-options-replica.html#sysvar_slave_skip_errors) (Aurora MySQL versi 2) atau variabel sistem [replica\$1skip\$1errors](https://dev.mysql.com/doc/refman/8.0/en/replication-options-replica.html#sysvar_replica_skip_errors) (Aurora MySQL versi 3).

**catatan**  
Pengguna database harus memiliki `INSERT` hak istimewa untuk database di mana ia memuat data.

## Menentukan jalur (URI) ke bucket Amazon S3
<a name="AuroraMySQL.Integrating.LoadFromS3.URI"></a>

Sintaksis untuk menentukan jalur (URI) ke file yang tersimpan di bucket Amazon S3 adalah sebagai berikut.

```
s3-region://amzn-s3-demo-bucket/file-name-or-prefix
```

Jalur tersebut mencakup nilai-nilai berikut:
+ `region`(opsional) - AWS Wilayah yang berisi bucket Amazon S3 untuk dimuat. Nilai ini bersifat opsional. Jika Anda tidak menentukan nilai `region`, Aurora memuat file Anda dari Amazon S3 di wilayah yang sama dengan klaster DB Anda.
+ `bucket-name` – Nama bucket Amazon S3 yang berisi data yang akan dimuat. Awalan objek yang mengidentifikasi jalur folder virtual didukung.
+ `file-name-or-prefix` – Nama file teks atau file XML Amazon S3, atau awalan yang mengidentifikasi satu atau beberapa file teks atau file XML yang akan dimuat. Anda juga dapat menentukan file manifes yang mengidentifikasi satu atau beberapa file teks yang akan dimuat. Untuk informasi selengkapnya tentang menggunakan file manifes untuk memuat file teks dari Amazon S3, lihat [Menggunakan manifes untuk menentukan file data yang akan dimuat](#AuroraMySQL.Integrating.LoadFromS3.Manifest).

**Untuk menyalin URI untuk file dalam bucket S3**

1. Masuk ke Konsol Manajemen AWS dan buka konsol Amazon S3 di. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)

1. Di panel navigasi, pilih **Bucket**, lalu pilih bucket yang URI-nya ingin Anda salin.

1. Pilih awalan atau file yang ingin Anda muat dari S3.

1. Pilih **Salin URI S3**.

## LOAD DATA FROM S3
<a name="AuroraMySQL.Integrating.LoadFromS3.Text"></a>

Anda dapat menggunakan pernyataan `LOAD DATA FROM S3` untuk memuat data dari format file teks apa pun yang didukung oleh pernyataan [LOAD DATA INFILE](https://dev.mysql.com/doc/refman/8.0/en/load-data.html) MySQL, seperti data teks yang dipisahkan koma. file terkompresi tidak didukung.

**catatan**  
Pastikan klaster DB Aurora MySQL Anda memungkinkan koneksi keluar ke S3. Untuk informasi selengkapnya, lihat [Mengaktifkan komunikasi jaringan dari Amazon Aurora ke layanan lain AWS](AuroraMySQL.Integrating.Authorizing.Network.md).

### Sintaksis
<a name="AuroraMySQL.Integrating.LoadFromS3.Text.Syntax"></a>

```
LOAD DATA [FROM] S3 [FILE | PREFIX | MANIFEST] 'S3-URI'
    [REPLACE | IGNORE]
    INTO TABLE tbl_name
    [PARTITION (partition_name,...)]
    [CHARACTER SET charset_name]
    [{FIELDS | COLUMNS}
        [TERMINATED BY 'string']
        [[OPTIONALLY] ENCLOSED BY 'char']
        [ESCAPED BY 'char']
    ]
    [LINES
        [STARTING BY 'string']
        [TERMINATED BY 'string']
    ]
    [IGNORE number {LINES | ROWS}]
    [(col_name_or_user_var,...)]
    [SET col_name = expr,...]
```

**catatan**  
Di Aurora MySQL versi 3.05 dan lebih tinggi, kata kunci `FROM` bersifat opsional.

### Parameter
<a name="AuroraMySQL.Integrating.LoadFromS3.Text.Parameters"></a>

Pernyataan `LOAD DATA FROM S3` menggunakan parameter wajib dan opsional berikut. Anda dapat menemukan detail selengkapnya tentang beberapa parameter ini dalam [LOAD DATA Statement](https://dev.mysql.com/doc/refman/8.0/en/load-data.html) dalam dokumentasi MySQL.

**FILE \$1 PREFIX \$1 MANIFEST**  
Mengidentifikasi apakah akan memuat data dari satu file, dari semua file yang cocok dengan awalan tertentu, atau dari semua file dalam manifes yang ditentukan. `FILE` adalah opsi default.

**S3-URI**  
Menentukan URI untuk teks atau file manifes yang akan dimuat, atau awalan Amazon S3 yang akan digunakan. Tentukan URI menggunakan sintaksis yang dijelaskan dalam [Menentukan jalur (URI) ke bucket Amazon S3](#AuroraMySQL.Integrating.LoadFromS3.URI).

**REPLACE \$1 IGNORE**  
Menentukan tindakan yang harus diambil jika baris input memiliki nilai kunci unik yang sama dengan baris yang ada dalam tabel basis data.  
+ Tentukan `REPLACE` jika Anda ingin baris input menggantikan baris yang ada dalam tabel.
+ Tentukan `IGNORE` jika Anda ingin membuang baris input.

**INTO TABLE**  
Mengidentifikasi nama tabel basis data yang akan dimuati dengan baris input.

**PARTITION**  
Mengharuskan semua baris input disisipkan ke partisi yang diidentifikasi oleh daftar nama partisi yang dipisahkan koma yang ditentukan. Jika baris input tidak dapat disisipkan ke salah satu partisi yang ditentukan, maka pernyataan ini akan gagal dan kesalahan akan ditampilkan.

**CHARACTER SET**  
Mengidentifikasi kumpulan karakter data dalam file input.

**FIELDS \$1 COLUMNS**  
Mengidentifikasi cara bidang atau kolom dalam file input dibatasi. Bidang dibatasi tab secara default.

**LINES**  
Mengidentifikasi cara baris dalam file input dibatasi. Baris dibatasi oleh karakter baris baru (`'\n'`) secara default.

**ABAIKAN *number* GARIS \$1 BARIS**  
Menentukan untuk mengabaikan jumlah tertentu baris di awal file input. Misalnya, Anda dapat menggunakan `IGNORE 1 LINES` untuk melewati baris header awal yang berisi nama kolom, atau `IGNORE 2 ROWS` untuk melewati dua baris pertama data dalam file input. Jika Anda juga menggunakan `PREFIX`, `IGNORE` akan melewati jumlah tertentu baris di awal file input pertama.

**col\$1name\$1or\$1user\$1var, ...**  
– Menentukan daftar yang dipisahkan koma yang berisi satu atau beberapa nama kolom atau variabel pengguna yang mengidentifikasi kolom mana yang akan dimuat berdasarkan nama. Nama variabel pengguna yang digunakan untuk tujuan ini harus cocok dengan nama elemen dari file teks, yang diawali dengan @. Anda dapat menggunakan variabel pengguna untuk menyimpan nilai bidang terkait untuk digunakan kembali nanti.  
Misalnya, pernyataan berikut memuat kolom pertama dari file input ke kolom pertama `table1`, dan menetapkan nilai kolom `table_column2` di `table1` ke nilai input kolom kedua dibagi 100.  

```
LOAD DATA FROM S3 's3://amzn-s3-demo-bucket/data.txt'
    INTO TABLE table1
    (column1, @var1)
    SET table_column2 = @var1/100;
```

**SET**  
Menentukan daftar operasi penetapan yang dipisahkan koma yang mengatur nilai kolom dalam tabel ke nilai yang tidak disertakan dalam file input.  
Misalnya, pernyataan berikut mengatur dua kolom pertama `table1` ke nilai di dua kolom pertama dari file input, lalu mengatur nilai `column3` di `table1` ke stempel waktu saat ini.  

```
LOAD DATA FROM S3  's3://amzn-s3-demo-bucket/data.txt'
    INTO TABLE table1
    (column1, column2)
    SET column3 = CURRENT_TIMESTAMP;
```
Anda dapat menggunakan subkueri di sisi kanan penetapan `SET`. Untuk subkueri yang menampilkan nilai yang akan ditetapkan ke kolom, Anda hanya dapat menggunakan subkueri skalar. Selain itu, Anda tidak dapat menggunakan subkueri untuk memilih dari tabel yang sedang dimuat. 

Anda tidak dapat menggunakan kata kunci `LOCAL` dari pernyataan `LOAD DATA FROM S3` jika memuat data dari bucket Amazon S3.

### Menggunakan manifes untuk menentukan file data yang akan dimuat
<a name="AuroraMySQL.Integrating.LoadFromS3.Manifest"></a>

Anda dapat menggunakan pernyataan `LOAD DATA FROM S3` dengan kata kunci `MANIFEST` untuk menentukan file manifes dalam format JSON yang mencantumkan file teks yang akan dimuat ke dalam tabel di klaster DB Anda.

Skema JSON berikut menjelaskan format dan konten file manifes.

```
{
    "$schema": "http://json-schema.org/draft-04/schema#",
    "additionalProperties": false,
    "definitions": {},
    "id": "Aurora_LoadFromS3_Manifest",
    "properties": {
        "entries": {
            "additionalItems": false,
            "id": "/properties/entries",
            "items": {
                "additionalProperties": false,
                "id": "/properties/entries/items",
                "properties": {
                    "mandatory": {
                        "default": "false",
                        "id": "/properties/entries/items/properties/mandatory",
                        "type": "boolean"
                    },
                    "url": {
                        "id": "/properties/entries/items/properties/url",
                        "maxLength": 1024,
                        "minLength": 1,
                        "type": "string"
                    }
                },
                "required": [
                    "url"
                ],
                "type": "object"
            },
            "type": "array",
            "uniqueItems": true
        }
    },
    "required": [
        "entries"
    ],
    "type": "object"
}
```

Setiap `url` dalam manifes harus menentukan URL dengan nama bucket dan jalur objek lengkap untuk file tersebut, bukan hanya awalan. Anda dapat menggunakan manifes untuk memuat file dari bucket yang berbeda-beda, wilayah yang berbeda-beda, atau file yang tidak memiliki awalan yang sama. Jika wilayah tidak ditentukan dalam URL, wilayah klaster DB Aurora target akan digunakan. Contoh berikut menunjukkan file manifes yang memuat empat file dari bucket yang berbeda.

```
{
  "entries": [
    {
      "url":"s3://aurora-bucket/2013-10-04-customerdata", 
      "mandatory":true
    },
    {
      "url":"s3-us-west-2://aurora-bucket-usw2/2013-10-05-customerdata",
      "mandatory":true
    },
    {
      "url":"s3://aurora-bucket/2013-10-04-customerdata", 
      "mandatory":false
    },
    {
      "url":"s3://aurora-bucket/2013-10-05-customerdata"
    }
  ]
}
```

Flag `mandatory` opsional menentukan apakah `LOAD DATA FROM S3` harus menampilkan kesalahan jika file tidak ditemukan. Flag `mandatory` diatur secara default ke `false`. Terlepas dari cara `mandatory` diatur, `LOAD DATA FROM S3` akan diterminasi jika tidak ada file yang ditemukan.

File manifes dapat memiliki ekstensi. Contoh berikut menjalankan pernyataan `LOAD DATA FROM S3` dengan manifes di contoh sebelumnya, yang bernama **customer.manifest**. 

```
LOAD DATA FROM S3 MANIFEST 's3-us-west-2://aurora-bucket/customer.manifest'
    INTO TABLE CUSTOMER
    FIELDS TERMINATED BY ','
    LINES TERMINATED BY '\n'
    (ID, FIRSTNAME, LASTNAME, EMAIL);
```

Setelah pernyataan selesai, entri untuk setiap file yang berhasil dimuat akan ditulis ke tabel `aurora_s3_load_history`. 

#### Memverifikasi file yang dimuat menggunakan tabel aurora\$1s3\$1load\$1history
<a name="AuroraMySQL.Integrating.LoadFromS3.Manifest.History"></a>

Setiap pernyataan `LOAD DATA FROM S3` yang berhasil akan memperbarui tabel `aurora_s3_load_history` dalam skema `mysql` dengan entri untuk setiap file yang dimuat.

Setelah Anda menjalankan pernyataan `LOAD DATA FROM S3`, Anda dapat memverifikasi file mana yang dimuat dengan mengueri tabel `aurora_s3_load_history`. Untuk melihat file yang dimuat dari satu iterasi pernyataan, gunakan klausa `WHERE` untuk memfilter catatan di URI Amazon S3 untuk file manifes yang digunakan dalam pernyataan. Jika Anda telah menggunakan file manifes yang sama sebelumnya, filter hasilnya menggunakan bidang `timestamp`.

```
select * from mysql.aurora_s3_load_history where load_prefix = 'S3_URI';
```

Tabel berikut menjelaskan bidang dalam tabel `aurora_s3_load_history`.


| Bidang | Deskripsi | 
| --- | --- | 
| `load_prefix` |  URI yang ditentukan dalam pernyataan pemuatan. URI ini dapat dipetakan ke salah satu hal berikut: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Integrating.LoadFromS3.html)  | 
|  `file_name`  |  Nama file yang dimuat ke Aurora dari Amazon S3 menggunakan URI yang diidentifikasi dalam bidang `load_prefix`.  | 
| `version_number` |  Nomor versi file yang diidentifikasi oleh bidang `file_name` yang dimuat, jika bucket Amazon S3 memiliki nomor versi.  | 
|  `bytes_loaded`  |  Ukuran file yang dimuat, dalam byte.  | 
| `load_timestamp`  |  Stempel waktu saat pernyataan `LOAD DATA FROM S3` selesai.  | 

### Contoh
<a name="AuroraMySQL.Integrating.LoadFromS3.Text.Examples"></a>

Pernyataan berikut memuat data dari bucket Amazon S3 yang berada di wilayah yang sama dengan klaster DB Aurora. Pernyataan tersebut membaca data yang dipisahkan koma di file `customerdata.txt` yang ada di bucket Amazon S3 *amzn-s3-demo-bucket*, lalu memuat data tersebut ke tabel `store-schema.customer-table`.

```
LOAD DATA FROM S3 's3://amzn-s3-demo-bucket/customerdata.csv' 
    INTO TABLE store-schema.customer-table
    FIELDS TERMINATED BY ','
    LINES TERMINATED BY '\n'
    (ID, FIRSTNAME, LASTNAME, ADDRESS, EMAIL, PHONE);
```

Pernyataan berikut memuat data dari bucket Amazon S3 yang berada di wilayah yang berbeda dari klaster DB Aurora. Pernyataan tersebut membaca data yang dipisahkan koma dari semua file yang cocok dengan awalan objek `employee-data` di bucket Amazon S3 *amzn-s3-demo-bucket* di wilayah `us-west-2`, lalu memuat data tersebut ke dalam tabel `employees`.

```
LOAD DATA FROM S3 PREFIX 's3-us-west-2://amzn-s3-demo-bucket/employee_data'
    INTO TABLE employees
    FIELDS TERMINATED BY ','
    LINES TERMINATED BY '\n'
    (ID, FIRSTNAME, LASTNAME, EMAIL, SALARY);
```

Pernyataan berikut memuat data dari file yang ditentukan dalam file manifes JSON bernama q1\$1sales.json ke dalam tabel `sales`. 

```
LOAD DATA FROM S3 MANIFEST 's3-us-west-2://amzn-s3-demo-bucket1/q1_sales.json'
    INTO TABLE sales
    FIELDS TERMINATED BY ','
    LINES TERMINATED BY '\n'
    (MONTH, STORE, GROSS, NET);
```

## LOAD XML FROM S3
<a name="AuroraMySQL.Integrating.LoadFromS3.XML"></a>

Anda dapat menggunakan pernyataan `LOAD XML FROM S3` untuk memuat data dari file XML yang tersimpan di bucket Amazon S3 dalam salah satu dari tiga format XML yang berbeda:
+ Nama kolom sebagai atribut elemen `<row>`. Nilai atribut mengidentifikasi konten bidang tabel.

  ```
  <row column1="value1" column2="value2" .../>
  ```
+ Nama kolom sebagai elemen turunan dari elemen `<row>`. Nilai elemen turunan mengidentifikasi konten bidang tabel.

  ```
  <row>
    <column1>value1</column1>
    <column2>value2</column2>
  </row>
  ```
+ Nama kolom di atribut `name` dari elemen `<field>` dalam elemen `<row>`. Nilai elemen `<field>` mengidentifikasi konten bidang tabel. 

  ```
  <row>
    <field name='column1'>value1</field>
    <field name='column2'>value2</field>
  </row>
  ```

### Sintaksis
<a name="AuroraMySQL.Integrating.LoadFromS3.XML.Syntax"></a>

```
LOAD XML FROM S3 'S3-URI'
    [REPLACE | IGNORE]
    INTO TABLE tbl_name
    [PARTITION (partition_name,...)]
    [CHARACTER SET charset_name]
    [ROWS IDENTIFIED BY '<element-name>']
    [IGNORE number {LINES | ROWS}]
    [(field_name_or_user_var,...)]
    [SET col_name = expr,...]
```

### Parameter
<a name="AuroraMySQL.Integrating.LoadFromS3.XML.Parameters"></a>

Pernyataan `LOAD XML FROM S3` menggunakan parameter wajib dan opsional berikut. Anda dapat menemukan detail selengkapnya tentang beberapa parameter ini dalam [LOAD XML Statement](https://dev.mysql.com/doc/refman/8.0/en/load-xml.html) dalam dokumentasi MySQL.

**FILE \$1 PREFIX**  
Mengidentifikasi apakah akan memuat data dari satu file, atau dari semua file yang cocok dengan awalan yang diberikan. `FILE` adalah opsi default.

**REPLACE \$1 IGNORE**  
Menentukan tindakan yang harus diambil jika baris input memiliki nilai kunci unik yang sama dengan baris yang ada dalam tabel basis data.  
+ Tentukan `REPLACE` jika Anda ingin baris input menggantikan baris yang ada dalam tabel.
+ Tentukan `IGNORE` jika Anda ingin membuang baris input. `IGNORE` adalah opsi default.

**INTO TABLE**  
Mengidentifikasi nama tabel basis data yang akan dimuati dengan baris input.

**PARTITION**  
Mengharuskan semua baris input disisipkan ke partisi yang diidentifikasi oleh daftar nama partisi yang dipisahkan koma yang ditentukan. Jika baris input tidak dapat disisipkan ke salah satu partisi yang ditentukan, maka pernyataan ini akan gagal dan kesalahan akan ditampilkan.

**CHARACTER SET**  
Mengidentifikasi kumpulan karakter data dalam file input.

**ROWS IDENTIFIED BY**  
Mengidentifikasi nama elemen yang mengidentifikasi baris dalam file input. Nilai default-nya `<row>`.

**ABAIKAN *number* GARIS \$1 BARIS**  
Menentukan untuk mengabaikan jumlah tertentu baris di awal file input. Misalnya, Anda dapat menggunakan `IGNORE 1 LINES` untuk melewati baris pertama dalam file teks, atau `IGNORE 2 ROWS` untuk melewati dua baris pertama data dalam XML input.

**field\$1name\$1or\$1user\$1var, ...**  
Menentukan daftar yang dipisahkan koma yang berisi satu atau beberapa nama elemen XML atau variabel pengguna yang mengidentifikasi elemen mana yang akan dimuat berdasarkan nama. Nama variabel pengguna yang digunakan untuk tujuan ini harus cocok dengan nama elemen dari file XML, yang diawali dengan @. Anda dapat menggunakan variabel pengguna untuk menyimpan nilai bidang terkait untuk digunakan kembali nanti.  
Misalnya, pernyataan berikut memuat kolom pertama dari file input ke kolom pertama `table1`, dan menetapkan nilai kolom `table_column2` di `table1` ke nilai input kolom kedua dibagi 100.  

```
LOAD XML FROM S3 's3://amzn-s3-demo-bucket/data.xml'
   INTO TABLE table1
   (column1, @var1)
   SET table_column2 = @var1/100;
```

**SET**  
Menentukan daftar operasi penetapan yang dipisahkan koma yang mengatur nilai kolom dalam tabel ke nilai yang tidak disertakan dalam file input.  
Misalnya, pernyataan berikut mengatur dua kolom pertama `table1` ke nilai di dua kolom pertama dari file input, lalu mengatur nilai `column3` di `table1` ke stempel waktu saat ini.  

```
LOAD XML FROM S3 's3://amzn-s3-demo-bucket/data.xml'
   INTO TABLE table1
   (column1, column2)
   SET column3 = CURRENT_TIMESTAMP;
```
Anda dapat menggunakan subkueri di sisi kanan penetapan `SET`. Untuk subkueri yang menampilkan nilai yang akan ditetapkan ke kolom, Anda hanya dapat menggunakan subkueri skalar. Selain itu, Anda tidak dapat menggunakan subkueri untuk memilih dari tabel yang sedang dimuat.