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/fakermilik 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
- Memodelkan Blog: Pengguna, Kiriman, Komentar
- Memilih Kunci dan Tipe
- Indeks untuk Kueri Umum
- Mengisi Basis Data dengan Data Pengujian