View a markdown version of this page

INSERT - 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

Menyisipkan baris baru ke dalam tabel. Anda dapat menyisipkan satu baris dengan sintaks VALUES, beberapa baris dengan sintaks VALUES, atau satu atau lebih baris yang ditentukan oleh hasil kueri (INSERT INTO... SELECT).

catatan

Kami sangat menyarankan Anda untuk menggunakan MENYONTEK perintah untuk memuat data dalam jumlah besar. Menggunakan pernyataan INSERT individual untuk mengisi tabel mungkin sangat lambat. Atau, jika data Anda sudah ada di tabel database Amazon Redshift lainnya, gunakan INSERT INTO SELECT atau CREATE TABLE AS untuk meningkatkan kinerja. Untuk informasi selengkapnya tentang menggunakan perintah COPY untuk memuat tabel, lihatMemuat data di Amazon Redshift.

catatan

Ukuran maksimum untuk satu pernyataan SQL adalah 16 MB.

Sintaksis

INSERT INTO table_name [ ( column [, ...] ) ] {DEFAULT VALUES | VALUES ( { expression | DEFAULT } [, ...] ) [, ( { expression | DEFAULT } [, ...] ) [, ...] ] | query }

Parameter

table_name

Tabel sementara atau persisten. Hanya pemilik tabel atau pengguna dengan hak istimewa INSERT pada tabel yang dapat menyisipkan baris. Jika Anda menggunakan klausa kueri untuk menyisipkan baris, Anda harus memiliki hak istimewa SELECT pada tabel yang disebutkan dalam kueri.

catatan

Gunakan INSERT (tabel eksternal) untuk menyisipkan hasil kueri SELECT ke tabel yang ada di katalog eksternal. Untuk informasi selengkapnya, lihat INSERT (tabel eksternal).

kolom

Anda dapat memasukkan nilai ke dalam satu atau lebih kolom tabel. Anda dapat mencantumkan nama kolom target dalam urutan apa pun. Jika Anda tidak menentukan daftar kolom, nilai yang akan dimasukkan harus sesuai dengan kolom tabel dalam urutan di mana mereka dideklarasikan dalam pernyataan CREATE TABLE. Jika jumlah nilai yang akan dimasukkan kurang dari jumlah kolom dalam tabel, n kolom pertama dimuat.

Baik nilai default yang dinyatakan atau nilai null dimuat ke kolom apa pun yang tidak terdaftar (secara implisit atau eksplisit) dalam pernyataan INSERT.

DEFAULT VALUES

Jika kolom dalam tabel diberi nilai default saat tabel dibuat, gunakan kata kunci ini untuk menyisipkan baris yang seluruhnya terdiri dari nilai default. Jika salah satu kolom tidak memiliki nilai default, nol dimasukkan ke dalam kolom tersebut. Jika salah satu kolom dinyatakan NOT NULL, pernyataan INSERT mengembalikan kesalahan.

NILAI

Gunakan kata kunci ini untuk menyisipkan satu atau lebih baris, setiap baris terdiri dari satu atau lebih nilai. Daftar VALUES untuk setiap baris harus sejajar dengan daftar kolom. Untuk menyisipkan beberapa baris, gunakan pembatas koma di antara setiap daftar ekspresi. Jangan ulangi kata kunci VALUES. Semua daftar VALUES untuk pernyataan INSERT beberapa baris harus berisi jumlah nilai yang sama.

ekspresi

Nilai tunggal atau ekspresi yang mengevaluasi ke nilai tunggal. Setiap nilai harus kompatibel dengan tipe data kolom tempat ia dimasukkan. Jika memungkinkan, nilai yang tipe datanya tidak cocok dengan tipe data yang dideklarasikan kolom secara otomatis dikonversi ke tipe data yang kompatibel. Contoh:

  • Nilai desimal 1.1 dimasukkan ke dalam kolom INT sebagai1.

  • Nilai desimal 100.8976 dimasukkan ke dalam kolom DEC (5,2) sebagai100.90.

Anda dapat secara eksplisit mengonversi nilai ke tipe data yang kompatibel dengan menyertakan sintaks tipe cast dalam ekspresi. Misalnya, jika kolom COL1 pada tabel T1 adalah kolom CHAR (3):

insert into t1(col1) values('Incomplete'::char(3));

Pernyataan ini menyisipkan nilai Inc ke dalam kolom.

Untuk pernyataan INSERT VALUES baris tunggal, Anda dapat menggunakan subkueri skalar sebagai ekspresi. Hasil subquery dimasukkan ke dalam kolom yang sesuai.

catatan

Subquery tidak didukung sebagai ekspresi untuk pernyataan INSERT VALUES beberapa baris.

DEFAULT

Gunakan kata kunci ini untuk menyisipkan nilai default untuk kolom, seperti yang didefinisikan saat tabel dibuat. Jika tidak ada nilai default untuk kolom, null dimasukkan. Anda tidak dapat menyisipkan nilai default ke kolom yang memiliki batasan NOT NULL jika kolom tersebut tidak memiliki nilai default eksplisit yang ditetapkan padanya dalam pernyataan CREATE TABLE.

query

Masukkan satu atau lebih baris ke dalam tabel dengan mendefinisikan kueri apa pun. Semua baris yang dihasilkan query dimasukkan ke dalam tabel. Kueri harus mengembalikan daftar kolom yang kompatibel dengan kolom dalam tabel, tetapi nama kolom tidak harus cocok.

Catatan penggunaan

catatan

Kami sangat menyarankan Anda untuk menggunakan MENYONTEK perintah untuk memuat data dalam jumlah besar. Menggunakan pernyataan INSERT individual untuk mengisi tabel mungkin sangat lambat. Atau, jika data Anda sudah ada di tabel database Amazon Redshift lainnya, gunakan INSERT INTO SELECT atau CREATE TABLE AS untuk meningkatkan kinerja. Untuk informasi selengkapnya tentang menggunakan perintah COPY untuk memuat tabel, lihatMemuat data di Amazon Redshift.

Format data untuk nilai yang disisipkan harus sesuai dengan format data yang ditentukan oleh definisi CREATE TABLE.

Setelah memasukkan sejumlah besar baris baru ke dalam tabel:

  • Vakum meja untuk merebut kembali ruang penyimpanan dan mengurutkan ulang baris.

  • Analisis tabel untuk memperbarui statistik untuk perencana kueri.

Ketika nilai dimasukkan ke dalam kolom DECIMAL dan melebihi skala yang ditentukan, nilai yang dimuat dibulatkan sesuai. Misalnya, ketika nilai 20.259 dimasukkan ke dalam kolom DECIMAL (8,2), nilai yang disimpan adalah20.26.

Anda dapat menyisipkan ke kolom GENERATED BY DEFAULT AS IDENTITY. Anda dapat memperbarui kolom yang didefinisikan sebagai GENERATED BY DEFAULT AS IDENTITY dengan nilai-nilai yang Anda berikan. Untuk informasi selengkapnya, lihat GENERATED BY DEFAULT AS IDENTITY.