- 1 1. Apa yang Akan Anda Dapat Lakukan dalam Artikel Ini
- 2 2. Jenis-jenis Impor MySQL dan Kapan Menggunakannya
- 3 3. Mengimpor File SQL (Jalur Paling Cepat untuk Sukses)
- 4 4. Impor CSV (Paling Penting: Tercepat dengan LOAD DATA)
- 4.1 4.1 Pertama: Prasyarat CSV
- 4.2 4.2 Form dasar siap salin-tempel (CSV dengan header)
- 4.3 4.3 Impor hanya kolom yang diperlukan
- 4.4 4.4 Konversi tanggal dan tipe selama impor
- 4.5 4.5 Untuk yang dipisahkan tab (TSV)
- 4.6 4.6 Tingkatkan performa lebih lanjut (untuk data besar)
- 4.7 ✔ Bentuk rekomendasi praktis
- 5 5. 4 Alasan Utama Kegagalan INFILE (Bagian Paling Penting)
- 6 6. Impor melalui GUI (Workbench / phpMyAdmin)
- 7 7. Pemecahan Masalah (Berdasarkan Kesalahan: Penyebab → Perbaikan Tercepat)
- 8 8. Teknik Dunia Nyata untuk Dataset Besar (Operasi Tahan Gagal)
- 8.1 8.1 Membagi file dan mengimpor secara bertahap
- 8.2 8.2 Menonaktifkan indeks dan kunci asing sementara
- 8.3 8.3 Mengontrol autocommit (mempercepat)
- 8.4 8.4 Pengaturan yang direkomendasikan untuk pemuatan massal
- 8.5 8.5 Tingkatkan batas waktu
- 8.6 8.6 Strategi tabel staging (operasi aman)
- 8.7 ✔ Pola dunia nyata paling stabil
- 8.8 ✔ Kesimpulan untuk data besar
- 9 9. FAQ (Pertanyaan Umum)
- 9.1 Q1. Bisakah saya mengimpor hanya kolom tertentu dari CSV?
- 9.2 Q2. Bagaimana cara memperlakukan sel kosong sebagai NULL?
- 9.3 Q3. Bagaimana cara melewatkan baris header?
- 9.4 Q4. Bagaimana saya dapat memvalidasi hasil impor?
- 9.5 Q5. Metode mana yang paling cepat?
- 9.6 Q6. Saya mendapatkan kesalahan akhir baris di Windows
- 9.7 Q7. Saya mendapatkan kesalahan secure_file_priv
- 9.8 ✔ Ringkasan FAQ
- 10 10. Ringkasan
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

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 DATAsangat 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)
| Method | Speed | Stability | Large-file support | Error analysis | Recommendation |
|---|---|---|---|---|---|
| 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:
- Periksa awal dan akhir file
head backup.sql tail backup.sql
- Periksa baris tepat sebelum kesalahan
- 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
LOCALMembaca file dari sisi klien (diperlukan di banyak lingkungan)IGNORE 1 LINESMelewati baris header@ageVariabel sementara yang digunakan untuk mentransformasi nilai sebelum disimpanNULLIF()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 serverLOAD 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.
| Command | Where it reads from | Typical use |
|---|---|---|
LOAD DATA INFILE | File on the server | A fixed path on the server |
LOAD DATA LOCAL INFILE | File on the client | A CSV on your local PC |
Kesalahpahaman umum
- Mencoba membaca file PC lokal dengan
INFILEdan 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.csvdirekomendasikan - Garis miring depan lebih aman daripada garis miring belakang
✔ Alur pemecahan masalah cepat untuk masalah INFILE
- Apakah Anda menambahkan
LOCAL? SHOW VARIABLES LIKE 'local_infile';SHOW VARIABLES LIKE 'secure_file_priv';- Periksa hak akses (SHOW GRANTS)
- 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)
- Luncurkan Workbench
- Menu → Server → Data Import
- Pilih “Import from Self-Contained File”
- Pilih file
.sql - Pilih Skema Target (database)
- Klik “Start Import”
Impor CSV (per tabel)
- Klik kanan pada tabel target
- Pilih Table Data Import Wizard
- Pilih file CSV
- Atur pemisah dan apakah ada header
- 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
- Pilih database target
- Buka tab “Import”
- Pilih file
- Pilih format (SQL / CSV)
- Jalankan
⚠ Keterbatasan phpMyAdmin
① Batas ukuran unggahan
upload_max_filesize
post_max_size
File besar akan gagal.
② Timeout
max_execution_timeImpor yang berjalan lama mungkin berhenti di tengah jalan.
③ Kekurangan memori
memory_limit6.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 INFILEdinonaktifkanlocal_infileMATI
✅ 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)
- Periksa enkoding
- Periksa
local_infile - Periksa
secure_file_priv - Periksa hak istimewa
- 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
- Muat ke dalam tabel staging
- Periksa jumlah baris
- Validasi batasan
- Terapkan ke produksi
- 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
utf8mb4untuk 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
- Pengkodean (disarankan utf8mb4)
SHOW VARIABLES LIKE 'local_infile';SHOW VARIABLES LIKE 'secure_file_priv';- Hak istimewa (SHOW GRANTS)
- 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.


