Lewati ke konten utama

INSERT INTO di Snowflake: Panduan Lengkap untuk Pemula

Pelajari cara menyisipkan data ke tabel Snowflake dengan efisien menggunakan pernyataan INSERT INTO. Panduan ini mencakup sintaks, use case, praktik terbaik, dan teknik pemecahan masalah.
Diperbarui 28 Sep 2026  · 6 mnt Baca

Jelajahi bersama AI

ChatGPTClaudePerplexity

Saat bekerja dengan Snowflake, salah satu operasi mendasar yang akan Anda lakukan adalah memasukkan data ke dalam tabel. Pernyataan INSERT INTO memungkinkan Anda menambahkan catatan baru ke tabel, baik dengan memasukkan nilai secara manual, menyisipkan beberapa baris sekaligus, maupun menarik data dari tabel lain.

Dalam panduan ini, saya akan memandu Anda melalui sintaks, berbagai use case, praktik terbaik, dan langkah pemecahan masalah umum untuk menggunakan INSERT INTO secara efektif di Snowflake.

Apa itu Perintah INSERT INTO di Snowflake?

Sebelum membahas sintaks, kita perlu memahami terlebih dahulu tujuan INSERT INTO di Snowflake dan berbagai use case-nya. 

Menambahkan data ke basis data adalah bagian penting dari pengelolaan basis data. Pernyataan INSERT INTO di Snowflake digunakan untuk menambahkan baris data baru ke dalam tabel. Ini dapat menyisipkan satu baris, beberapa baris, atau data massal dari tabel lain. Anda dapat memasukkan data dengan mengetik setiap nilai untuk baris tertentu secara manual, atau untuk sekumpulan baris, atau menggunakan pernyataan SQL untuk memuat data massal dari sumber data lain.

> Meskipun INSERT INTO adalah perintah dasar, memahami Snowflake dan arsitekturnya adalah titik awal yang baik. Lihat tutorial tentang Snowflake untuk menyegarkan kembali dasar-dasarnya!

Use case untuk INSERT INTO

Berikut beberapa use case umum untuk klausa INSERT INTO. 

  • Menambahkan catatan baru secara manual ke sebuah tabel.
  • Menyisipkan beberapa baris sekaligus dalam satu kueri.
  • Memindahkan data dari satu tabel ke tabel lain.
  • Menambahkan data baru ke dataset yang sudah ada.
  • Mengisi sebuah tabel dari hasil kueri SELECT.

> Mempelajari klausa ini juga bermanfaat untuk wawancara Snowflake!

Sintaks INSERT INTO di Snowflake

Sekarang kita masuk ke sintaks sebenarnya. Pertama, mari bahas penggunaan paling sederhana dari INSERT INTO: sekadar menambahkan data ke baris dengan memasukkan nilai secara manual.

Sintaks dasar untuk INSERT INTO adalah sebagai berikut:

INSERT INTO table_name (column1, column2, column3)
VALUES (value1, value2, value3);

Anda menuliskan klausa INSERT INTO diikuti table_name, yaitu tempat kita memasukkan data. Untuk memastikan urutan data, kita dapat menentukan nama kolom yang diikuti dalam tanda kurung seperti (column1, column2, column3). Bagian terakhir adalah menuliskan VALUES (value1, value2, value3), yang akan dimasukkan ke kolom masing-masing.

Memasukkan data tanpa menyebutkan nama kolom

Jika Anda menghilangkan nama kolom, Snowflake mengasumsikan nilai diberikan dalam urutan yang sama dengan skema tabel. Artinya, nilai pertama diasumsikan untuk kolom pertama di tabel, dan seterusnya.

INSERT INTO table_name
VALUES (value1, value2, value3);

Dengan pendekatan ini, Anda harus memastikan nilai berada dalam urutan yang sama dengan kolom, jika tidak Anda dapat mengalami masalah dengan tipe data atau konsistensi data.

Penggunaan Lanjutan INSERT INTO di Snowflake

Beberapa penggunaan lanjutan INSERT INTO mencakup menyisipkan satu baris dari tabel lain, menyisipkan beberapa baris, atau menyisipkan data dengan kondisi. Ini adalah cara yang berguna untuk menambahkan data ke tabel atau mengarsipkan data di tabel terpisah.

Menggunakan INSERT INTO dengan beberapa baris

Alih-alih menyisipkan satu baris setiap kali, Anda dapat menyisipkan beberapa baris dalam satu pernyataan:

INSERT INTO employees (id, name, department)
VALUES
    (1, 'Alice', 'HR'),
    (2, 'Bob', 'Finance'),
    (3, 'Charlie', 'IT');

Pendekatan ini mengurangi overhead eksekusi kueri dan meningkatkan performa. Perhatikan bahwa setiap baris sepenuhnya diapit oleh satu set tanda kurung dan diikuti koma. Tidak melakukannya dapat menyebabkan error. 

Menyisipkan data dari tabel lain

Untuk menyalin data dari satu tabel ke tabel lain, gunakan INSERT INTO dengan pernyataan SELECT:

INSERT INTO target_table (column1, column2)

SELECT
column1, 
column2 
FROM source_table ;

Ini berguna untuk mengarsipkan data, mentransformasi data sebelum penyisipan, atau menambahkan catatan yang telah difilter. Jika data sumber berada dalam urutan kolom yang sama dengan target, maka Anda dapat menghilangkan penamaan kolom di sebelah target_table.

Insert bersyarat

Anda dapat menyisipkan data berdasarkan kondisi dalam pernyataan SELECT, sehingga Anda tidak menyalin seluruh tabel.

INSERT INTO high_salary_employees (id, name, salary)

SELECT 
id, 
name, 
salary
FROM employees 
WHERE salary > 100000;

Ini memastikan hanya karyawan yang memenuhi kondisi yang dimasukkan ke tabel baru. Melakukan hal ini membantu menjaga integritas data serta mengurangi overhead penyimpanan dan komputasi.

Praktik Terbaik Menggunakan INSERT INTO di Snowflake

Berikut beberapa praktik terbaik saat menggunakan INSERT INTO di Snowflake. Ini mencakup menggunakan pernyataan yang lebih efisien seperti MERGE dan memvalidasi data sebelum penyisipan.

Menggunakan MERGE alih-alih INSERT INTO untuk upsert

Jika Anda perlu menyisipkan catatan baru tetapi memperbarui catatan yang sudah ada, MERGE adalah opsi yang lebih baik karena dapat mencocokkan data yang ada. 

Ini mencari di mana baris saat ini memenuhi kriteria tertentu (misalnya, ID karyawan yang sudah ada) dan dapat memperbarui nilai tertentu di tabel target menggunakan tabel sumber. Ketika tidak ada kecocokan, maka akan menyisipkan data baru. Ini adalah konsep yang dikenal sebagai “upsert” (update dan insert). 

Lihat di bawah untuk contoh cara menggunakan MERGE:

MERGE INTO target_table AS t
USING source_table AS s
ON t.id = s.id
WHEN MATCHED THEN
    UPDATE SET t.salary = s.salary
WHEN NOT MATCHED THEN
    INSERT (id, name, salary) VALUES (s.id, s.name, s.salary);

> Pernyataan MERGE dengan cepat menjadi prosedur standar dan merupakan bagian kunci dari sertifikasi Snowflake.

Batch insert dan performa

Untuk meningkatkan performa saat menyisipkan dataset besar, usahakan fokus pada melakukan batch insert. Ini mengurangi overhead karena tidak perlu membuat koneksi baru pada setiap pemuatan dan meningkatkan performa keseluruhan. Berikut beberapa tips untuk batch insert:

  • Gunakan bulk insert alih-alih menyisipkan baris satu per satu.
  • Gunakan COPY INTO saat memuat data besar dari sumber eksternal. Ini berguna saat terhubung ke sesuatu seperti S3.
  • Hindari menyisipkan data di dalam loop pada skrip; pemrosesan batch lebih efisien. Jadi selesaikan loop, simpan data sebagai satu sumber data, lalu muat seluruh sumber data tersebut sekaligus.

Validasi data sebelum menyisipkan

Sebelum menyisipkan data, validasi terlebih dahulu. Ini dapat menimbulkan banyak masalah, atau bahkan kegagalan, jika data Anda tidak divalidasi. Pikirkan bagaimana data mungkin digunakan di hilir dan seperti apa seharusnya data yang Anda sisipkan. Berikut beberapa hal penting yang perlu diperhatikan:

  • Tipe data sesuai dengan definisi kolom.
  • Kolom wajib tidak bernilai null.
  • Tidak ada duplikasi primary key atau pelanggaran unique constraint.

Penanganan Error dengan INSERT INTO di Snowflake

Seperti telah disebutkan, ada kalanya terjadi error saat menyisipkan data. Berikut beberapa saran untuk menangani error umum. 

Menangani duplikasi key

Snowflake sendiri tidak selalu menerapkan unique constraint, artinya dimungkinkan untuk menyisipkan data duplikat. 

Jika Anda khawatir tentang duplikasi key, lebih baik menanganinya dengan MERGE atau ON CONFLICT (jika didukung). Pada akhirnya, Anda juga dapat menambahkan kondisi pada insert Anda menggunakan WHERE untuk mengecualikan apa pun yang sudah ada di tabel target.

INSERT INTO employees (id, name)
SELECT id, name FROM new_employees
WHERE id NOT IN (SELECT id FROM employees);

Menangani nilai NULL

Pastikan kolom yang dapat bernilai null mengizinkan nilai NULL atau menyediakan nilai default. Snowflake menerapkan constraint NOT NULL pada kolom, jadi jika Anda memiliki data NULL di kolom dengan constraint tersebut, insert Anda akan gagal. Hal terpenting di sini adalah memahami data Anda, di mana NULL diizinkan ada, dan di mana tidak.

Pemecahan Masalah Umum dengan INSERT INTO

Beberapa masalah lain bisa bermuara pada tipe data atau masalah izin. Kita akan membahas secara singkat cara menangani masalah ini.

Ketidaksesuaian tipe data

Error terjadi saat menyisipkan nilai dengan tipe data yang salah. Terkadang Anda dapat menanganinya dengan melakukan type casting pada data Anda, tetapi itu dapat menghasilkan NULL. Untuk memastikan data yang Anda sisipkan sama dengan target, Anda dapat mencoba melihat information_schema (di mana Anda memiliki izin) dan menilai skema Anda dengan cara itu:

SELECT column_name, 
data_type
 FROM information_schema.columns 
WHERE table_name = 'employees';

Masalah izin

Jika Anda menerima error izin, periksa peran pengguna dan hak istimewa:

SHOW GRANTS TO USER current_user;

Jika Anda tidak memiliki izin untuk menggunakan INSERT, periksakan ke manajer Anda, departemen TI, atau siapa pun pemilik dataset. Jika Anda dapat memberikan izin kepada diri sendiri, gunakan kode berikut:

GRANT INSERT ON TABLE employees TO user_name;

Kesimpulan

Perintah INSERT INTO di Snowflake adalah alat yang andal untuk menambahkan data ke tabel secara efisien. Baik menyisipkan satu baris, data massal, maupun menyalin dari tabel lain, memahami sintaks dan praktik terbaiknya memastikan integritas data dan performa. Anda dapat mempertahankan basis data Snowflake yang tangguh dan efisien dengan menangani error, memvalidasi data, dan mengoptimalkan penyisipan. 

Untuk mempelajari lebih lanjut tentang Snowflake, saya merekomendasikan kursus berikut:

FAQs

Apa perbedaan antara INSERT INTO dan COPY INTO di Snowflake?

INSERT INTO digunakan untuk menyisipkan baris data tertentu, sedangkan COPY INTO dioptimalkan untuk memuat dataset besar secara massal dari sumber eksternal seperti AWS S3 atau Azure Blob Storage.

Apakah INSERT INTO mendukung transaksi di Snowflake?

Ya, Snowflake mendukung transaksi, sehingga Anda dapat menggunakan BEGIN, COMMIT, dan ROLLBACK untuk memastikan integritas data saat menyisipkan data.

Apa praktik terbaik performa saat menyisipkan data dalam jumlah besar?

Gunakan batch insert alih-alih menyisipkan baris satu per satu, manfaatkan COPY INTO untuk pemuatan massal, dan hindari indeks yang tidak perlu yang dapat memperlambat performa penyisipan.

Bisakah saya melakukan INSERT INTO pada secure view di Snowflake?

Tidak. View—termasuk secure view—adalah tabel virtual dan tidak dapat ditulis secara langsung. Anda harus menyisipkan ke tabel dasar yang mendasarinya atau menggunakan tabel staging sementara, lalu membuat ulang atau menyegarkan view tersebut.

Bagaimana cara memasukkan data JSON ke kolom VARIANT?

Bungkus JSON dengan tanda kutip tunggal dan cast ke VARIANT, misalnya INSERT INTO t (payload) VALUES (PARSE_JSON('{\"key\":\"value\"}'));. Snowflake secara otomatis mempertahankan format semi-terstruktur untuk kueri selanjutnya.

Apa cara tercepat untuk membatalkan INSERT INTO yang tidak sengaja?

Manfaatkan Time Travel untuk mengembalikan tabel ke titik sebelum insert: CREATE OR REPLACE TABLE my_table AS SELECT * FROM my_table AT (TIMESTAMP => '2025-06-17 09:00:00');. Ini menghindari pernyataan DELETE manual dan mempertahankan clustering.

Apakah INSERT INTO secara otomatis membuat micro-partition?

Ya. Setiap operasi DML (termasuk insert) memicu mesin micro-partitioning Snowflake, yang mengorganisasi data untuk pruning dan kompresi. Anda tidak perlu mengelola partisi secara manual.

Bagaimana dampak clustering terhadap performa INSERT?

Clustering key membantu kecepatan kueri tetapi menambah overhead pada penulisan. Insert yang sering ke tabel yang sangat di-cluster dapat lebih lambat, jadi pilih clustering key dengan cermat dan lakukan recluster di luar jam sibuk jika memungkinkan.

Bisakah saya menggunakan INSERT INTO dengan Snowpipe?

Secara tidak langsung. Snowpipe mengimpor file ke tabel staging; Anda kemudian dapat INSERT INTO tabel analitik setelah transformasi. Untuk pemuatan berkelanjutan, gabungkan Snowpipe dengan streams & tasks alih-alih insert manual.

Berapa banyak data yang dapat saya sisipkan dalam satu pernyataan?

Snowflake mendukung operasi INSERT INTO … SELECT yang sangat besar—hingga multi-terabita dalam praktik—karena membagi pekerjaan menjadi mikro-batch. Pembatas utama adalah ukuran warehouse dan pengaturan timeout.

Hak istimewa peran apa yang diperlukan untuk INSERT INTO pada shared database?

Peran harus memiliki hak istimewa INSERT pada tabel target di dalam akun konsumen. Data share bersifat hanya-baca secara default, sehingga biasanya Anda menyalin data ke basis data Anda sendiri yang dapat ditulis terlebih dahulu.

Bagaimana saya memantau waktu eksekusi dan biaya INSERT INTO?

Kueri view QUERY_HISTORY untuk statistik eksekusi, ukuran warehouse, dan kredit yang digunakan. Padukan dengan ACCOUNT_USAGE.QUERY_HISTORY untuk analisis tren jangka panjang dan optimasi biaya.


Tim Lu's photo
Author
Tim Lu
LinkedIn

Saya seorang data scientist dengan pengalaman dalam analisis spasial, machine learning, dan pipeline data. Saya pernah bekerja dengan GCP, Hadoop, Hive, Snowflake, Airflow, dan proses data science/engineering lainnya.

Topik
Snowflake
Cloud

Pelajari lebih lanjut tentang Snowflake dengan kursus-kursus ini!

Kursus

Pengantar Snowflake

2 jam
50K
Snowflake adalah platform data warehouse unggulan. Pelajari cara menggunakan Snowsight, antarmuka SQL yang mudah digunakan untuk mengakses dan menjelajahi data.
Lihat DetailRight Arrow
Mulai Kursus
Lihat SelengkapnyaRight Arrow
Terkait

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026

Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Dario Radečić's photo

Dario Radečić

15 mnt

blogs

Spaghetti Plot dan Jalur Badai

Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Hugo Bowne-Anderson's photo

Hugo Bowne-Anderson

13 mnt

blogs

Tutorial Korelasi di R

Dapatkan pengenalan dasar-dasar korelasi di R: pelajari lebih lanjut tentang koefisien korelasi, matriks korelasi, plotting korelasi, dan sebagainya.
David Woods's photo

David Woods

13 mnt

blogs

12 Alternatif ChatGPT Terbaik yang Bisa Anda Coba pada 2026

Artikel ini menyajikan daftar alternatif ChatGPT yang akan meningkatkan produktivitas Anda.
Javier Canales Luna's photo

Javier Canales Luna

14 mnt

Lihat SelengkapnyaLihat Selengkapnya