Panduan Impor MySQL: Impor Dump SQL & CSV dengan Cepat (LOAD DATA, Workbench, phpMyAdmin)

目次

1. Apa yang Akan Anda Dapat Lakukan dalam Artikel Ini

Banyak orang yang mencari “MySQL data import” berada dalam situasi di mana mereka ingin:

  • “memulihkan file .sql”
  • “mengimpor CSV”
  • “berhenti dengan error”
  • “tidak berfungsi di Workbench atau phpMyAdmin”

Dengan kata lain, Anda menginginkan solusi yang dapat Anda terapkan sekarang juga.

Pertama, berikut jalur “sukses” terpendek berdasarkan tujuan.

🔹 Perintah tercepat untuk mengimpor file SQL (.sql)

Untuk pemulihan backup atau migrasi server, ini adalah yang paling cepat.

mysql -u username -p database_name < backup.sql

Hal-hal yang perlu diperiksa terlebih dahulu

  • Apakah basis data tujuan sudah ada?
  • Apakah pengguna yang terhubung memiliki hak istimewa untuk DB target?
  • Encoding file SQL (biasanya UTF-8)

Jika basis data belum dibuat:

CREATE DATABASE example_db;

🔹 Cara tercepat mengimpor file CSV (direkomendasikan)

Untuk mengimpor data besar dengan cepat, LOAD DATA adalah pilihan ideal.

LOAD DATA LOCAL INFILE '/path/to/example.csv'
INTO TABLE example_table
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(id, name, @age)
SET age = NULLIF(@age,'');

Poin penting

  • Akhiran baris Windows → '\r\n'
  • Jika ada baris header → IGNORE 1 LINES
  • Mengubah string kosong menjadi NULL → NULLIF()
  • Banyak lingkungan memerlukan LOCAL (penjelasan nanti)

🔹 Jika Anda ingin mengimpor lewat GUI

MySQL Workbench

  • Server → Data Import → pilih file → jalankan

phpMyAdmin

  • Pilih DB target → Import → pilih file → jalankan

⚠ Namun, untuk file besar dan penanganan error yang dapat diandalkan, CLI (command line) lebih dapat dipercaya.

🔹 3 hal yang harus diperiksa sebelum mengimpor

1. Set karakter (paling penting)

SHOW VARIABLES LIKE 'character_set%';

Direkomendasikan: utf8mb4

2. Pengaturan yang menyebabkan error terkait INFILE

SHOW VARIABLES LIKE 'local_infile';
SHOW VARIABLES LIKE 'secure_file_priv';

3. Pemeriksaan hak istimewa

SHOW GRANTS FOR 'user'@'localhost';

✔ Apa yang akan dibahas selanjutnya dalam artikel ini

  • Cara detail mengimpor file SQL
  • Teknik praktis mengimpor CSV
  • Penjelasan lengkap mengapa INFILE gagal
  • Perbaikan tercepat berdasarkan tipe error
  • Teknik dunia nyata untuk dataset besar

MySQL data import workflow diagram showing SQL file, CSV file, LOAD DATA LOCAL INFILE, mysql command, and MySQL server process

2. Jenis-jenis Impor MySQL dan Kapan Menggunakannya

Ada banyak cara untuk mengimpor ke MySQL, tetapi pilihan terbaik tergantung pada kasus penggunaan Anda.
Jika Anda memahaminya dengan benar, Anda dapat menghindari masalah yang tidak perlu.

2.1 Kapan mengimpor dump SQL (.sql)

Kasus penggunaan umum

  • Memulihkan dari backup
  • Migrasi server
  • Menerapkan data mirip produksi ke lingkungan dev
  • Mengimpor kembali data yang diekspor dengan mysqldump

Fitur

  • Memulihkan seluruh struktur tabel + data
  • Reproduksibilitas tinggi
  • Dapat menyertakan transaksi
  • Secara umum pilihan paling aman

Metode tipikal

mysql -u user -p dbname < dump.sql

Atau di dalam MySQL:

SOURCE /path/to/dump.sql;

Cocok untuk

  • Pemulihan penuh DB yang sudah ada
  • Membangun kembali lingkungan produksi
  • Memuat data untuk lingkungan CI/CD

2.2 Kapan mengimpor CSV / TSV

Kasus penggunaan umum

  • Menerima data dari sistem eksternal
  • Mengimpor data Excel
  • Proses ETL
  • Memperbarui hanya tabel tertentu

Fitur

  • Hanya memuat data (skema harus ada terpisah)
  • Cepat ( LOAD DATA sangat cepat)
  • Memungkinkan logika transformasi selama impor

Metode tipikal

LOAD DATA LOCAL INFILE 'file.csv'
INTO TABLE table_name
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n';

Cocok untuk

  • Job batch terjadwal
  • Integrasi data
  • Ingesti berkecepatan tinggi untuk jumlah baris besar

2.3 Kapan menggunakan alat GUI

Alat umum:

  • MySQL Workbench
  • phpMyAdmin

Fitur

  • Operasi intuitif
  • Ramah pemula
  • Cocok untuk dataset kecil

Perhatian

  • Batas unggahan (phpMyAdmin)
  • Timeout
  • Tidak stabil dengan data besar
  • Lebih sulit menganalisis error

2.4 Perbandingan berdasarkan metode (pandangan praktis)

MethodSpeedStabilityLarge-file supportError analysisRecommendation
mysql command★★★★★
LOAD DATA★★★★★
Workbench★★★
phpMyAdmin×★★

✔ Pilihan yang direkomendasikan dalam pekerjaan nyata

  • Pemulihan cadangan → perintah mysql
  • Impor CSV berkecepatan tinggi → LOAD DATA LOCAL INFILE
  • Tugas kecil, sekali pakai → GUI

Jika Anda tidak yakin, memilih CLI (command line) adalah opsi paling stabil.

3. Mengimpor File SQL (Jalur Paling Cepat untuk Sukses)

Mengimpor file .sql adalah metode paling umum untuk pemulihan cadangan dan migrasi server.
Di sini, tujuan adalah “berhasil secepat mungkin,” jadi kami akan fokus hanya pada langkah-langkah praktis yang digunakan dalam pekerjaan nyata.

3.1 Pemulihan dalam satu baris (metode paling umum)

Ini adalah metode yang paling andal dan tercepat.

mysql -u username -p database_name < backup.sql

Setelah menjalankannya, Anda akan diminta memasukkan kata sandi.

✔ Pemeriksaan awal (untuk mencegah kegagalan)

① Apakah basis data ada?
SHOW DATABASES;

Jika tidak ada:

CREATE DATABASE example_db;
② Apakah pengguna memiliki hak istimewa?
SHOW GRANTS FOR 'user'@'localhost';

Jika hak istimewa tidak ada:

GRANT ALL PRIVILEGES ON example_db.* TO 'user'@'localhost';
FLUSH PRIVILEGES;
③ Pengkodean file

Biasanya menggunakan UTF-8.
Jika Anda melihat karakter yang rusak, tentukan secara eksplisit.

mysql --default-character-set=utf8mb4 -u user -p dbname < backup.sql

3.2 Jalankan dari dalam MySQL (perintah SOURCE)

Metode ini dijalankan setelah Anda masuk ke MySQL.

mysql -u user -p
USE example_db;
SOURCE /path/to/backup.sql;

Kapan ini berguna

  • Saat Anda ingin menjalankan hanya sebagian file SQL
  • Saat Anda ingin mengidentifikasi lokasi kesalahan yang tepat
  • Saat Anda ingin mengonfirmasi log eksekusi secara visual

3.3 Kegagalan umum dan perbaikan

❌ ERROR 1049: Basis data tidak dikenal

→ DB tidak ada
→ Jalankan CREATE DATABASE

❌ ERROR 1045: Akses ditolak

→ Hak istimewa tidak cukup
→ Periksa dengan SHOW GRANTS

❌ Berhenti di tengah / lokasi kesalahan tidak jelas

Perbaikan:

  1. Periksa awal dan akhir file
    head backup.sql
    tail backup.sql
    
  1. Periksa baris tepat sebelum kesalahan
  2. Jika file besar, bagi dan jalankan dalam bagian-bagian
    split -l 10000 backup.sql part_
    

3.4 Tips untuk menstabilkan impor SQL besar

① Periksa pengaturan transaksi

Lihat apakah SET autocommit=0; termasuk

② Jika kendala kunci asing menjadi masalah

SET FOREIGN_KEY_CHECKS=0;
-- import
SET FOREIGN_KEY_CHECKS=1;

③ Periksa mode SQL

SELECT @@sql_mode;

Mode ketat mungkin memengaruhi impor.

✔ Rekomendasi praktis

  • Pemulihan produksi → perintah mysql
  • Debugging → SOURCE
  • File besar → CLI + pertimbangkan pemisahan

4. Impor CSV (Paling Penting: Tercepat dengan LOAD DATA)

Saat mengimpor data CSV, metode tercepat dan paling praktis adalah LOAD DATA.
Untuk dataset besar, metode ini jauh lebih cepat dibandingkan pernyataan INSERT.

Di sini, kami akan menyediakan format “salin-tempel dan jalankan” yang benar dan menyoroti titik kegagalan umum.

4.1 Pertama: Prasyarat CSV

Sebelum mengimpor, pastikan untuk memeriksa hal berikut.

✔ Pembatas

  • Koma ,
  • Tab \t
  • Titik koma ; (umum dalam data luar negeri)

✔ Karakter kutipan

  • Apakah nilai diapit seperti "value" dengan tanda kutip ganda

✔ Akhir baris

  • Linux / Mac → \n
  • Windows → \r\n

✔ Set karakter / pengkodean

  • Direkomendasikan: utf8mb4
  • CSV yang dibuat di Windows mungkin Shift-JIS
  • UTF-8 dengan BOM kadang dapat menyebabkan kesalahan

Contoh pemeriksaan:

file -i example.csv

4.2 Form dasar siap salin-tempel (CSV dengan header)

LOAD DATA LOCAL INFILE '/path/to/example.csv'
INTO TABLE example_table
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(id, name, @age)
SET age = NULLIF(@age,'');

Makna setiap opsi

  • LOCAL Membaca file dari sisi klien (diperlukan di banyak lingkungan)
  • IGNORE 1 LINES Melewati baris header
  • @age Variabel sementara yang digunakan untuk mentransformasi nilai sebelum disimpan
  • NULLIF() Mengonversi string kosong menjadi NULL

4.3 Impor hanya kolom yang diperlukan

Jika CSV memiliki kolom yang tidak perlu:

LOAD DATA LOCAL INFILE '/path/to/example.csv'
INTO TABLE example_table
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
(id, @dummy, age);

Petakan kolom yang tidak diinginkan ke @dummy.

4.4 Konversi tanggal dan tipe selama impor

Contoh: konversi MM/DD/YYYY → format MySQL

LOAD DATA LOCAL INFILE '/path/to/example.csv'
INTO TABLE example_table
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
(@date_col, name)
SET date_col = STR_TO_DATE(@date_col, '%m/%d/%Y');

4.5 Untuk yang dipisahkan tab (TSV)

FIELDS TERMINATED BY '\t'

4.6 Tingkatkan performa lebih lanjut (untuk data besar)

Nonaktifkan indeks sementara

ALTER TABLE example_table DISABLE KEYS;
-- Run LOAD DATA
ALTER TABLE example_table ENABLE KEYS;

Nonaktifkan foreign key sementara

SET FOREIGN_KEY_CHECKS=0;
-- Run LOAD DATA
SET FOREIGN_KEY_CHECKS=1;

Mengapa LOCAL sering diperlukan

  • LOAD DATA INFILE → membaca file di sisi server
  • LOAD DATA LOCAL INFILE → membaca file di sisi klien

Di banyak lingkungan, menggunakan LOCAL memiliki tingkat keberhasilan yang lebih tinggi.

✔ Bentuk rekomendasi praktis

Dalam kebanyakan kasus:

LOAD DATA LOCAL INFILE
+ explicit delimiter
+ explicit line endings
+ IGNORE 1 LINES
+ type conversion

Ini adalah pendekatan yang paling stabil.

5. 4 Alasan Utama Kegagalan INFILE (Bagian Paling Penting)

Kebanyakan kegagalan LOAD DATA INFILE disebabkan oleh pengaturan, hak akses, atau kesalahpahaman lokasi sumber.
Jika Anda memahami ini, Anda dapat menyelesaikan sebagian besar kesalahan segera.

5.1 Perbedaan antara INFILE dan LOCAL INFILE

Ini adalah konsep dasar kunci.

CommandWhere it reads fromTypical use
LOAD DATA INFILEFile on the serverA fixed path on the server
LOAD DATA LOCAL INFILEFile on the clientA CSV on your local PC

Kesalahpahaman umum

  • Mencoba membaca file PC lokal dengan INFILE dan gagal
  • File tidak ada di server

✔ Aturan praktis cepat

  • CSV di PC Anda sendiri → LOCAL
  • CSV yang ditempatkan di server → INFILE

Jika tidak yakin, menggunakan LOCAL adalah pilihan teraman.

5.2 local_infile dinonaktifkan (penyebab ERROR 1148)

Contoh kesalahan:

ERROR 1148 (42000): The used command is not allowed with this MySQL version

Penyebab:

local_infile MATI

✔ Periksa pengaturan saat ini

SHOW VARIABLES LIKE 'local_infile';

✔ Aktifkan saat terhubung (sisi klien)

mysql --local-infile=1 -u user -p

✔ Aktifkan secara permanen (file konfigurasi)

Tambahkan ke my.cnf atau my.ini:

[mysqld]
local_infile=1

Anda harus me-restart server.

5.3 Pembatasan secure_file_priv

Ini terjadi saat menggunakan LOAD DATA INFILE (tanpa LOCAL).

Periksa:

SHOW VARIABLES LIKE 'secure_file_priv';

Contoh output

/var/lib/mysql-files/

→ Anda hanya dapat membaca file di dalam direktori ini.

✔ Perbaikan

  • Pindahkan CSV ke direktori yang diizinkan
  • Atau gunakan LOCAL

5.4 Hak akses tidak mencukupi (hak FILE / izin OS)

Contoh kesalahan:

ERROR 1045: Access denied

Periksa:

SHOW GRANTS FOR 'user'@'localhost';

✔ Hak yang diperlukan

GRANT FILE ON *.* TO 'user'@'localhost';

※ Demi keamanan, operasikan dengan hak akses minimal yang mungkin.

5.5 Spesifikasi path yang salah

  • Gunakan path absolut, bukan path relatif
  • Di Windows, C:/path/file.csv direkomendasikan
  • Garis miring depan lebih aman daripada garis miring belakang

✔ Alur pemecahan masalah cepat untuk masalah INFILE

  1. Apakah Anda menambahkan LOCAL ?
  2. SHOW VARIABLES LIKE 'local_infile';
  3. SHOW VARIABLES LIKE 'secure_file_priv';
  4. Periksa hak akses (SHOW GRANTS)
  5. Periksa path (path absolut)

Dalam urutan ini, Anda dapat menyelesaikan sebagian besar kasus.

6. Impor melalui GUI (Workbench / phpMyAdmin)

Baris perintah adalah yang paling stabil, tetapi ada situasi di mana Anda ingin menggunakan alat GUI.
Di sini, kita akan fokus pada masalah umum yang sering membuat orang kesulitan dalam pekerjaan nyata.

6.1 Impor dengan MySQL Workbench

Impor file SQL (pemulihan cadangan)

  1. Luncurkan Workbench
  2. Menu → Server → Data Import
  3. Pilih “Import from Self-Contained File”
  4. Pilih file .sql
  5. Pilih Skema Target (database)
  6. Klik “Start Import”

Impor CSV (per tabel)

  1. Klik kanan pada tabel target
  2. Pilih Table Data Import Wizard
  3. Pilih file CSV
  4. Atur pemisah dan apakah ada header
  5. Jalankan

⚠ Alasan umum Workbench macet

  • File besar (ratusan MB atau lebih)
  • Timeout
  • Ketidakcocokan pengkodean
  • Pembatasan secure_file_priv

👉 Untuk file besar atau lingkungan produksi, CLI direkomendasikan.

6.2 Impor dengan phpMyAdmin

Langkah-langkah

  1. Pilih database target
  2. Buka tab “Import”
  3. Pilih file
  4. Pilih format (SQL / CSV)
  5. Jalankan

⚠ Keterbatasan phpMyAdmin

① Batas ukuran unggahan

upload_max_filesize
post_max_size

File besar akan gagal.

② Timeout
max_execution_time

Impor yang berjalan lama mungkin berhenti di tengah jalan.

③ Kekurangan memori
memory_limit

6.3 Kapan Anda harus menggunakan GUI

  • Dataset kecil (beberapa MB)
  • Lingkungan pengembangan
  • Pekerjaan sementara satu kali

6.4 Kapan Anda harus menggunakan CLI (direkomendasikan)

  • Lingkungan produksi
  • Puluhan MB atau lebih
  • Impor CSV besar
  • Saat Anda membutuhkan analisis kesalahan
  • Migrasi server-ke-server

✔ Kesimpulan praktis

GUI “mudah,” tetapi
CLI jauh lebih unggul untuk stabilitas, reproduktibilitas, dan penanganan file besar.

Untuk pemecahan masalah, mempelajari operasi CLI pada akhirnya direkomendasikan.

7. Pemecahan Masalah (Berdasarkan Kesalahan: Penyebab → Perbaikan Tercepat)

Sebagian besar kesalahan impor MySQL sangat berpola.
Di sini, kita akan mengorganisirnya dalam urutan “penyebab → tindakan pertama → perintah verifikasi.”

7.1 ERROR 1148 (42000)

Perintah yang digunakan tidak diizinkan dengan versi MySQL ini

🔎 Penyebab

  • LOAD DATA LOCAL INFILE dinonaktifkan
  • local_infile MATI

✅ Perbaikan tercepat

① Periksa pengaturan saat ini

SHOW VARIABLES LIKE 'local_infile';

② Aktifkan saat terhubung (sisi klien)

mysql --local-infile=1 -u user -p

③ Aktifkan secara permanen (jika diperlukan)

[mysqld]
local_infile=1

→ Restart MySQL

7.2 ERROR 1366

Nilai string tidak benar

🔎 Penyebab

  • Ketidakcocokan pengkodean
  • Ketidaksesuaian antara utf8 dan utf8mb4
  • Campuran Shift-JIS

✅ Perbaikan tercepat

① Periksa set karakter saat ini

SHOW VARIABLES LIKE 'character_set%';

② Ubah tabel menjadi utf8mb4

ALTER TABLE example_table CONVERT TO CHARACTER SET utf8mb4;

③ Tentukan secara eksplisit saat impor

mysql --default-character-set=utf8mb4 -u user -p db < file.sql

7.3 ERROR 1062

Entri duplikat

🔎 Penyebab

  • Kunci utama duplikat
  • Pelanggaran batasan UNIQUE

✅ Opsi perbaikan

Opsi 1: Abaikan duplikat
LOAD DATA LOCAL INFILE 'file.csv'
INTO TABLE example_table
IGNORE;
Opsi 2: Perbarui pada duplikat
INSERT INTO example_table (id, name)
VALUES (1,'John')
ON DUPLICATE KEY UPDATE name=VALUES(name);
Opsi 3: Gunakan tabel staging
CREATE TEMPORARY TABLE temp LIKE example_table;
-- LOAD into temp first
INSERT INTO example_table
SELECT * FROM temp;

7.4 ERROR 1045

Akses ditolak untuk pengguna

🔎 Penyebab

  • Hak istimewa DB tidak mencukupi
  • Hak istimewa FILE tidak mencukupi
  • Izin OS tidak mencukupi untuk jalur

✅ Periksa

SHOW GRANTS FOR 'user'@'localhost';

✅ Contoh hak istimewa yang diperlukan

GRANT ALL PRIVILEGES ON example_db.* TO 'user'@'localhost';
FLUSH PRIVILEGES;

※ Berhati-hatilah saat memberikan hak istimewa FILE.

7.5 Berhenti di tengah jalan pada file besar

🔎 Penyebab

  • Batas waktu
  • Kehabisan memori
  • Batas PHP (phpMyAdmin)

✅ Langkah cepat paling efektif

Tingkatkan batas waktu
SET GLOBAL net_read_timeout=600;
SET GLOBAL net_write_timeout=600;
Bagi file
split -l 100000 large.csv part_

✔ Alur penyelesaian error (paling cepat)

  1. Periksa enkoding
  2. Periksa local_infile
  3. Periksa secure_file_priv
  4. Periksa hak istimewa
  5. Periksa akhir baris ( \n / \r\n )

Dengan urutan ini, Anda dapat menyelesaikan sebagian besar masalah.

8. Teknik Dunia Nyata untuk Dataset Besar (Operasi Tahan Gagal)

Saat mengimpor ratusan ribu hingga jutaan baris,
metode biasanya dapat menjadi lambat, berhenti, atau gagal.

Berikut adalah teknik stabil yang umum digunakan dalam produksi.

8.1 Membagi file dan mengimpor secara bertahap

Memasukkan CSV/SQL besar sekaligus dapat menyebabkan masalah memori dan batas waktu.

✔ Linux / Mac

split -l 100000 large.csv part_

→ Bagi menjadi 100.000 baris per bagian

✔ Windows (contoh PowerShell)

Get-Content large.csv -TotalCount 100000 > part_1.csv

✔ Manfaat impor bertahap

  • Lebih mudah mencoba kembali setelah kegagalan parsial
  • Lebih mudah menemukan lokasi kesalahan
  • Beban server lebih stabil

8.2 Menonaktifkan indeks dan kunci asing sementara

Selama impor, pembaruan indeks sering menjadi hambatan.

✔ Menonaktifkan indeks sementara

ALTER TABLE example_table DISABLE KEYS;
-- LOAD DATA
ALTER TABLE example_table ENABLE KEYS;

※ Utamanya untuk MyISAM. Pengaruh terbatas untuk InnoDB.

✔ Menonaktifkan kunci asing

SET FOREIGN_KEY_CHECKS=0;
-- import
SET FOREIGN_KEY_CHECKS=1;

8.3 Mengontrol autocommit (mempercepat)

SET autocommit=0;
-- LOAD DATA
COMMIT;
SET autocommit=1;

8.4 Pengaturan yang direkomendasikan untuk pemuatan massal

SET UNIQUE_CHECKS=0;
SET FOREIGN_KEY_CHECKS=0;
SET AUTOCOMMIT=0;

Setelah impor:

COMMIT;
SET UNIQUE_CHECKS=1;
SET FOREIGN_KEY_CHECKS=1;
SET AUTOCOMMIT=1;

⚠ Gunakan dengan hati-hati di produksi.

8.5 Tingkatkan batas waktu

SET GLOBAL net_read_timeout=600;
SET GLOBAL net_write_timeout=600;

8.6 Strategi tabel staging (operasi aman)

Alih-alih mengimpor langsung ke tabel produksi, gunakan tabel validasi terlebih dahulu.

CREATE TABLE staging LIKE example_table;
LOAD DATA LOCAL INFILE 'file.csv' INTO TABLE staging;

Setelah validasi:

INSERT INTO example_table
SELECT * FROM staging;

✔ Pola dunia nyata paling stabil

  1. Muat ke dalam tabel staging
  2. Periksa jumlah baris
  3. Validasi batasan
  4. Terapkan ke produksi
  5. Simpan log

✔ Kesimpulan untuk data besar

  • Gunakan CLI bila memungkinkan
  • Bagi impor
  • Lewati proses staging
  • Nonaktifkan batasan sementara
  • Periksa log

Ini akan menjaga impor tetap stabil bahkan pada jutaan baris.

9. FAQ (Pertanyaan Umum)

Berikut jawaban cepat dan praktis untuk pertanyaan impor MySQL yang sering dicari.

Q1. Bisakah saya mengimpor hanya kolom tertentu dari CSV?

Ya, Anda bisa.

Anda dapat memetakan kolom yang tidak diperlukan ke variabel (seperti @dummy) dan mengabaikannya.

LOAD DATA LOCAL INFILE '/path/to/example.csv'
INTO TABLE example_table
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
(id, @dummy, age);

Jika Anda hanya menginginkan kolom tertentu, pastikan untuk menyebutkan urutan kolom secara eksplisit.

Q2. Bagaimana cara memperlakukan sel kosong sebagai NULL?

Gunakan NULLIF().

LOAD DATA LOCAL INFILE '/path/to/example.csv'
INTO TABLE example_table
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
(name, @age)
SET age = NULLIF(@age,'');

Ini mengubah string kosong (”) menjadi NULL.

Q3. Bagaimana cara melewatkan baris header?

IGNORE 1 LINES

Contoh:

LOAD DATA LOCAL INFILE '/path/to/example.csv'
INTO TABLE example_table
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
IGNORE 1 LINES;

Q4. Bagaimana saya dapat memvalidasi hasil impor?

✔ Periksa jumlah baris

SELECT COUNT(*) FROM example_table;

✔ Periksa peringatan/galat

Periksa peringatan MySQL:

SHOW WARNINGS;

✔ Strategi tabel staging (disarankan)

Muat ke dalam tabel staging terlebih dahulu, kemudian terapkan ke produksi.

Q5. Metode mana yang paling cepat?

Kesimpulan:

  • CSV → LOAD DATA LOCAL INFILE (paling cepat)
  • Pemulihan cadangan → perintah mysql

GUI nyaman, tetapi CLI unggul dalam kecepatan dan stabilitas.

Q6. Saya mendapatkan kesalahan akhir baris di Windows

Ini disebabkan oleh akhir baris.

Windows:

LINES TERMINATED BY '\r\n'

Linux / Mac:

LINES TERMINATED BY '\n'

Q7. Saya mendapatkan kesalahan secure_file_priv

Periksa:

SHOW VARIABLES LIKE 'secure_file_priv';

Perbaikan:

  • Letakkan CSV di direktori yang diizinkan
  • Atau gunakan LOCAL

✔ Ringkasan FAQ

  • Pemetaan kolom → @dummy
  • Konversi NULL → NULLIF
  • Lewati header → IGNORE 1 LINES
  • Impor berkecepatan tinggi → LOAD DATA
  • Titik “macet” utama → local_infile / secure_file_priv / pengkodean

10. Ringkasan

Impor MySQL mungkin terlihat kompleks pada awalnya, tetapi setelah diatur berdasarkan tujuan, mereka sangat sederhana.

Mari kita rangkum jalur keberhasilan terpendek.

✔ Pulihkan file SQL (.sql)

Paling cepat dan paling stabil:

mysql -u user -p dbname < backup.sql
  • Periksa apakah DB ada
  • Periksa hak istimewa
  • Disarankan utf8mb4 untuk pengkodean

✔ Impor CSV (cepat)

Bentuk dasar:

LOAD DATA LOCAL INFILE '/path/to/file.csv'
INTO TABLE table_name
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES;

Poin penting:

  • Akhir baris Windows → \r\n
  • String kosong → NULLIF()
  • Jika gagal, periksa local_infile

✔ Urutan pemeriksaan pemecahan masalah

  1. Pengkodean (disarankan utf8mb4)
  2. SHOW VARIABLES LIKE 'local_infile';
  3. SHOW VARIABLES LIKE 'secure_file_priv';
  4. Hak istimewa (SHOW GRANTS)
  5. Akhir baris

Dengan urutan ini, Anda dapat menyelesaikan sebagian besar masalah.

✔ Aturan emas untuk dataset besar

  • Gunakan CLI
  • Bagi impor
  • Lewati tabel staging
  • Nonaktifkan sementara kunci asing/kendala
  • Periksa log

✔ Kesimpulan akhir

  • Pemulihan cadangan → perintah mysql
  • Impor CSV berkecepatan tinggi → LOAD DATA LOCAL INFILE
  • Tugas kecil sekali → GUI

Jika Anda ragu, menggunakan CLI adalah pilihan paling stabil.

Dengan ini, Anda kini memiliki rangkaian pengetahuan lengkap untuk impor MySQL.

Cobalah di lingkungan Anda dan bangun alur kerja operasional yang stabil.