Memuat data ke klaster DB Amazon Aurora MySQL dari file teks di bucket Amazon S3 - Amazon Aurora

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

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.

Memberi Aurora akses ke Amazon S3

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.

    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.

    Anda tidak memerlukan izin ini untuk memuat objek yang dienkripsi menggunakan Kunci yang dikelola AWS atau kunci terkelola Amazon S3 (SSE-S3).

  2. Buat peran IAM, lalu lampirkan kebijakan IAM yang Anda buat di Membuat kebijakan IAM untuk mengakses sumber daya Amazon S3 ke peran IAM baru. Untuk petunjuk, lihat Membuat peran IAM untuk mengizinkan Amazon Aurora mengakses layanan AWS.

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

    Untuk informasi selengkapnya tentang membuat grup parameter klaster DB kustom, lihat Membuat grup parameter klaster DB.

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

  5. Untuk mengizinkan pengguna basis data dalam klaster DB Aurora MySQL untuk mengakses Amazon S3, kaitkan peran yang Anda buat di Membuat peran IAM untuk mengizinkan Amazon Aurora mengakses layanan AWS 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.

  6. Konfigurasikan klaster DB Aurora MySQL Anda untuk memungkinkan koneksi keluar ke Amazon S3. Untuk petunjuk, lihat Mengaktifkan komunikasi jaringan dari Amazon Aurora MySQL ke layanan AWS lainnya.

    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.

    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

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. Untuk detail selengkapnya, lihat Menggunakan peran 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 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_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 mengatur replikasi antara klaster DB Aurora sebagai master replikasi dan basis data MySQL sebagai klien replikasi, maka pernyataan GRANT untuk peran atau hak akses 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_rds_skip_repl_error. Untuk melewati kesalahan pada basis data MySQL eksternal, gunakan variabel sistem slave_skip_errors (Aurora MySQL versi 2) atau variabel sistem 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

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

s3-region://DOC-EXAMPLE-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.

Untuk menyalin URI untuk file dalam bucket S3
  1. Masuk ke AWS Management Console dan buka konsol Amazon S3 di https://console.aws.amazon.com/s3/.

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

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

  4. Pilih Salin URI S3.

LOAD DATA FROM S3

Anda dapat menggunakan pernyataan LOAD DATA FROM S3 untuk memuat data dari format file teks apa pun yang didukung oleh pernyataan LOAD DATA INFILE 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 MySQL ke layanan AWS lainnya.

Sintaksis

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

Pernyataan LOAD DATA FROM S3 menggunakan parameter wajib dan opsional berikut. Anda dapat menemukan detail selengkapnya tentang beberapa parameter ini dalam LOAD DATA Statement dalam dokumentasi MySQL.

FILE | PREFIX | 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.

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

IGNORE angka LINES | ROWS

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_name_or_user_var, ...

– 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://DOC-EXAMPLE-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://DOC-EXAMPLE-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

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_s3_load_history

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:

  • File data tunggal untuk pernyataan LOAD DATA FROM S3 FILE

  • Awalan Amazon S3 yang dipetakan ke beberapa file data untuk pernyataan LOAD DATA FROM S3 PREFIX

  • File manifes tunggal yang berisi nama file yang akan dimuat untuk pernyataan LOAD DATA FROM S3 MANIFEST

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

Pernyataan berikut memuat data dari bucket Amazon S3 yang berada di wilayah yang sama dengan klaster DB Aurora. Pernyataan tersebut membaca data yang dibatasi koma dalam file customerdata.txt yang ada di bucket DOC-EXAMPLE-BUCKET Amazon S3, lalu memuat data ke dalam tabel. store-schema.customer-table

LOAD DATA FROM S3 's3://DOC-EXAMPLE-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 dibatasi koma dari semua file yang cocok dengan awalan employee-data objek di bucket DOC-EXAMPLE-BUCKET Amazon S3 di wilayah tersebut, lalu memuat data ke us-west-2 dalam tabel. employees

LOAD DATA FROM S3 PREFIX 's3-us-west-2://DOC-EXAMPLE-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_sales.json ke dalam tabel sales.

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

LOAD XML FROM S3

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

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

Pernyataan LOAD XML FROM S3 menggunakan parameter wajib dan opsional berikut. Anda dapat menemukan detail selengkapnya tentang beberapa parameter ini dalam LOAD XML Statement dalam dokumentasi MySQL.

FILE | PREFIX

Mengidentifikasi apakah akan memuat data dari satu file, atau dari semua file yang cocok dengan awalan yang diberikan. FILE adalah opsi default.

REPLACE | 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. Default-nya adalah <row>.

IGNORE angka LINES | ROWS

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_name_or_user_var, ...

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://DOC-EXAMPLE-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://DOC-EXAMPLE-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.