View a markdown version of this page

INSERT (tabel eksternal) - Amazon Redshift

Amazon Redshift tidak akan lagi mendukung penggunaan Python UDF setelah 30 Juni 2026. Kami akan mulai menegakkannya secara bertahap. Untuk informasi lebih lanjut tentang detail opsi akhir masa pakai dan migrasi Python, lihat posting blog yang diterbitkan pada 30 Juni 2025.

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

INSERT (tabel eksternal)

Menyisipkan hasil kueri SELECT ke tabel eksternal yang ada di katalog eksternal seperti for AWS Glue, AWS Lake Formation, atau metastore Apache Hive. Gunakan peran AWS Identity and Access Management (IAM) yang sama yang digunakan untuk perintah CREATE EXTERNAL SCHEMA untuk berinteraksi dengan katalog eksternal dan Amazon S3.

Untuk tabel yang tidak dipartisi, perintah INSERT (tabel eksternal) menulis data ke lokasi Amazon S3 yang ditentukan dalam tabel, berdasarkan properti tabel dan format file yang ditentukan.

Untuk tabel yang dipartisi, INSERT (tabel eksternal) menulis data ke lokasi Amazon S3 sesuai dengan kunci partisi yang ditentukan dalam tabel. Ini juga secara otomatis mendaftarkan partisi baru di katalog eksternal setelah operasi INSERT selesai.

Anda tidak dapat menjalankan INSERT (tabel eksternal) dalam blok transaksi (BEGIN... AKHIR). Untuk informasi lebih lanjut tentang transaksi, lihatTingkat isolasi di Amazon Redshift.

Sintaksis

INSERT INTO external_schema.table_name { select_statement }

Parameter

nama_tabel skema eksternal_

Nama skema eksternal yang ada dan tabel eksternal target untuk dimasukkan.

select_statement

Pernyataan yang menyisipkan satu atau lebih baris ke tabel eksternal dengan mendefinisikan kueri apa pun. Semua baris yang dihasilkan kueri ditulis ke Amazon S3 baik dalam format teks atau parket berdasarkan definisi tabel. Kueri harus mengembalikan daftar kolom yang kompatibel dengan tipe data kolom di tabel eksternal. Namun, nama kolom tidak harus cocok.

Catatan penggunaan

Jumlah kolom dalam kueri SELECT harus sama dengan jumlah kolom data dan kolom partisi. Lokasi dan tipe data dari setiap kolom data harus sesuai dengan tabel eksternal. Lokasi kolom partisi harus berada di akhir query SELECT, dalam urutan yang sama dengan yang didefinisikan dalam perintah CREATE EXTERNAL TABLE. Nama kolom tidak harus cocok.

Dalam beberapa kasus, Anda mungkin ingin menjalankan perintah INSERT (tabel eksternal) pada Katalog AWS Glue Data atau metastore Hive. Dalam kasus AWS Glue, peran IAM yang digunakan untuk membuat skema eksternal harus memiliki izin baca dan tulis di Amazon S3 dan AWS Glue. Jika Anda menggunakan AWS Lake Formation katalog, peran IAM ini menjadi pemilik tabel Formasi Danau yang baru. Peran IAM ini setidaknya harus memiliki izin berikut:

  • PILIH, SISIPKAN, PERBARUI izin pada tabel eksternal

  • Izin lokasi data pada jalur Amazon S3 dari tabel eksternal

Untuk memastikan bahwa nama file unik, Amazon Redshift menggunakan format berikut untuk nama setiap file yang diunggah ke Amazon S3 secara default.

<date>_<time>_<microseconds>_<query_id>_<slice-number>_part_<part-number>.<format>.

Contohnya adalah 20200303_004509_810669_1007_0001_part_00.parquet.

Pertimbangkan hal berikut saat menjalankan perintah INSERT (tabel eksternal):

  • Tabel eksternal yang memiliki format selain PARQUET atau TEXTFILE tidak didukung.

  • Perintah ini mendukung properti tabel yang ada seperti 'write.parallel', 'write.maxfilesize.mb', 'compression_type', dan 'serialization.null.format'. Untuk memperbarui nilai-nilai tersebut, jalankan perintah ALTER TABLE SET TABLE PROPERTIES.

  • Properti tabel 'numRows' diperbarui secara otomatis menjelang akhir operasi INSERT. Properti tabel harus ditentukan atau ditambahkan ke tabel jika tidak dibuat oleh operasi CREATE EXTERNAL TABLE AS.

  • Klausa LIMIT tidak didukung dalam kueri SELECT luar. Sebagai gantinya, gunakan klausa LIMIT bersarang.

  • Anda dapat menggunakan STL_UNLOAD_LOG tabel untuk melacak file yang ditulis ke Amazon S3 oleh setiap operasi INSERT (tabel eksternal).

  • Amazon Redshift hanya mendukung enkripsi standar Amazon S3 untuk INSERT (tabel eksternal).

Contoh INSERT (tabel eksternal)

Contoh berikut menyisipkan hasil pernyataan SELECT ke tabel eksternal.

INSERT INTO spectrum.lineitem SELECT * FROM local_lineitem;

Contoh berikut menyisipkan hasil pernyataan SELECT ke dalam tabel eksternal yang dipartisi menggunakan partisi statis. Kolom partisi di-hardcode dalam pernyataan SELECT. Kolom partisi harus berada di akhir kueri.

INSERT INTO spectrum.customer SELECT name, age, gender, 'May', 28 FROM local_customer;

Contoh berikut menyisipkan hasil pernyataan SELECT ke dalam tabel eksternal yang dipartisi menggunakan partisi dinamis. Kolom partisi tidak di-hardcode. Data secara otomatis ditambahkan ke folder partisi yang ada, atau ke folder baru jika partisi baru ditambahkan.

INSERT INTO spectrum.customer SELECT name, age, gender, month, day FROM local_customer;