0Pricing
SQL Academy · Pelajaran

Mengisi Basis Data dengan Data Pengujian

Buat data pengujian yang realistis dengan INSERT ... SELECT dan generate_series, lalu verifikasi dengan kueri analitis sederhana.

Mengisi Basis Data dengan Data Pengujian adalah pelajaran SQL Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar SQL Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus SQL Academy mencakup 4 pelajaran total.

Mengapa Mengisi Data Awal?

Basis data kosong menyembunyikan bug. Anda memerlukan data yang realistis:

  • Untuk menjalankan pengujian UI/E2E
  • Untuk memverifikasi karakteristik kinerja (indeks, rencana kueri)
  • Untuk mendemonstrasikan aplikasi

Data Awal yang Ditulis Manual

Untuk beberapa baris "data contoh", tulislah secara manual dalam SQL atau migrasi:

INSERT INTO users (id, email, full_name) VALUES
  (1, 'alice@example.com', 'Alice Adams'),
  (2, 'bob@example.com',   'Bob Brown');

SELECT setval('users_id_seq', (SELECT MAX(id) FROM users));

Seri yang Dibuat untuk Data Massal

generate_series sangat berguna. Buat 1000 postingan:

INSERT INTO posts (author_id, title, body, published_at)
SELECT
  ((random() * 9 + 1)::int),                              -- random user 1-10
  'Post number ' || g,
  'Lorem ipsum body ' || g,
  NOW() - (random() * INTERVAL '90 days')
FROM generate_series(1, 1000) AS g;

Kunci Asing Acak

Pilih baris induk secara acak:

INSERT INTO comments (post_id, author_id, body)
SELECT
  (SELECT id FROM posts ORDER BY random() LIMIT 1),
  (SELECT id FROM users ORDER BY random() LIMIT 1),
  'Sample comment ' || g
FROM generate_series(1, 5000) AS g;
-- Slow at scale — see next slide for a faster pattern.

Lebih Cepat: Simpan Induk di Tembolok Terlebih Dahulu

Wujudkan ID kandidat satu kali:

WITH u AS (SELECT id FROM users),
     p AS (SELECT id FROM posts)
INSERT INTO comments (post_id, author_id, body)
SELECT
  (SELECT id FROM p OFFSET floor(random()*1000)::int LIMIT 1),
  (SELECT id FROM u OFFSET floor(random()*10)::int   LIMIT 1),
  'Sample comment ' || g
FROM generate_series(1, 5000) AS g;

faker_fdw dan Alat

Untuk data palsu yang lebih kaya (nama, alamat, paragraf), gunakan:

  • faker_fdw — ekstensi Postgres yang mengekspos Python Faker
  • @faker-js/faker milik Node
  • Pengisi data awal Django/Rails dalam bentuk skrip

COPY untuk Impor Data Massal

Untuk memuat satu juta baris, COPY lebih cepat daripada INSERT sebesar 5–10x:

COPY users (email, full_name)
  FROM '/tmp/seed_users.csv' WITH (FORMAT csv, HEADER true);

Mengatur Ulang Urutan

Jika Anda menyisipkan baris secara manual dengan ID eksplisit, majukan urutan agar ID otomatis berikutnya tidak bertabrakan:

SELECT setval('users_id_seq', (SELECT COALESCE(MAX(id), 0) FROM users));

Data Awal Idempoten

Buat data awal yang dapat dijalankan berkali-kali dengan aman. Gunakan UPSERT atau TRUNCATE lalu INSERT:

INSERT INTO products (sku, name, price) VALUES
  ('A-001', 'Widget', 9.99)
ON CONFLICT (sku) DO UPDATE
  SET name = EXCLUDED.name, price = EXCLUDED.price;

Distribusi yang Realistis

Pengujian harus mencerminkan pola produksi. Jika 80% postingan memiliki 0 komentar dan 1% memiliki 1000 komentar, data pengujian harus terlihat seperti itu; jika tidak, rencana indeks Anda akan menyesatkan.

Mengisi Data Awal di CI

Untuk pengujian menyeluruh, jalankan skrip pengisian data awal setelah migrasi dan sebelum rangkaian pengujian. Simpan data awal dalam kontrol versi.

Ringkasan

Data awal yang baik = data realistis + skrip idempoten + pemuatan cepat (COPY untuk data besar).

  • generate_series untuk data massal
  • UPSERT untuk proses berulang
  • setval setelah penyisipan manual
  • Sesuaikan dengan distribusi produksi

Pemeriksaan Cepat

Anda ingin menyisipkan 10.000 baris data pengujian dengan cepat. Fungsi PostgreSQL apa yang menghasilkan nomor baris?

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Mengisi Basis Data dengan Data Pengujian” gratis?

Ya — teks lengkap “Mengisi Basis Data dengan Data Pengujian” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus SQL Academy, upgrade ke CoddyKit PRO. Kursus SQL Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Mengisi Basis Data dengan Data Pengujian”?

Buat data pengujian yang realistis dengan INSERT ... SELECT dan generate_series, lalu verifikasi dengan kueri analitis sederhana. Kamu berlatih SQL Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai SQL Academy?

Tidak diperlukan pengalaman sebelumnya. SQL Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.

Berapa lama pelajaran “Mengisi Basis Data dengan Data Pengujian” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran SQL Academy ini?

Ya. Setiap pelajaran SQL Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Memodelkan Blog: Pengguna, Kiriman, Komentar
  2. Memilih Kunci dan Tipe
  3. Indeks untuk Kueri Umum
  4. Mengisi Basis Data dengan Data Pengujian
← Kembali ke SQL Academy