Cara Import Data MySQL Menggunakan File csv di Server Linux

  • 3 min read
  • Nov 14, 2024
Cara Import Data MySQL Menggunakan File csv di Server Linux

Artikel ini merupakan catatan saya ketika mengerjakan salah satu projek ditempat saya bekerja. Dibandingkan menggunakan tools remote DB seperti DBeaver atau HeidiSQL.

Mengimpor data ke dalam database MySQL dari file .csv atau .tsv di server Linux adalah proses yang lebih efisien dan sering digunakan dalam manajemen basis data. Apalagi jika file data yang diimport dengan ukuran besar, seperti pada kasus saya, mendapat tugas untuk import data production sekitar 2 GB yang didalamnya terdapat 6 juta data.

Artikel ini akan menjelaskan melalui langkah-langkah untuk mengimpor data menggunakan perintah LOAD DATA INFILE, yang merupakan salah satu metode paling efisien dan fleksibel untuk mengimpor data. saya juga akan tulis beberapa tambahan yang dapat membantu jika Kamu mengalami masalah.

Sebelum memulai, pastikan Kamu telah memenuhi prasyarat berikut:

  1. Akses ke Server Linux
    Kamu harus memiliki akses ke server Linux di mana MySQL diinstal.
  2. Hak Akses MySQL
    Pastikan Kamu memiliki hak akses yang sesuai untuk mengimpor data ke tabel MySQL.
  3. File .csv/.tsv
    Pastikan file .csv/.tsv yang akan diimpor sudah tersedia di server.

Langkah 1: Siapkan Tabel di MySQL

Sebelum mengimpor data, pastikan tabel yang akan digunakan sudah ada di database MySQL. Jika belum, Kamu perlu membuat tabel terlebih dahulu.

Misalnya, jika Kamu memiliki file .csv dengan kolom name, age, dan city, Kamu dapat membuat tabel seperti berikut:

CREATE TABLE my_table (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100),
    age INT,
    city VARCHAR(100)
);

Langkah 2: Periksa dan Persiapkan File .csv/.tsv

File .csv harus memiliki format yang benar agar bisa diimpor dengan mudah. Pastikan file Kamu:

  • Memiliki Pemisah Kolom yang Konsisten:
    Biasanya koma (,), tetapi bisa juga tab atau pemisah lain.
  • Tidak Memiliki Baris yang Tidak Diperlukan:
    Jika file .csv memiliki header, Kamu mungkin perlu mengabaikannya saat mengimpor data.

Contoh file .csv:

name,age,city
John Doe,30,New York
Jane Smith,25,Los Angeles

Langkah 3: Mengonfigurasi MySQL untuk LOCAL INFILE

Secara default, MySQL mungkin tidak mengizinkan penggunaan LOAD DATA LOCAL INFILE karena masalah keamanan. Untuk mengaktifkannya:

Edit File Konfigurasi MySQL:
Di Server:
Pastikan file konfigurasi MySQL server (my.cnf atau my.ini) telah diubah dengan benar. Periksa bagian [mysqld] dan pastikan baris berikut ada dan tidak dikomentari. Ubah file konfigurasi MySQL (my.cnf atau my.ini) dan tambahkan atau ubah parameter berikut:

sudo nano /etc/mysql/my.cnf
[mysqld]
local_infile=1

Di Client: Pastikan file konfigurasi client (~/.my.cnf atau my.ini di Windows) telah diubah untuk mengaktifkan local-infile. Periksa bagian [client] dan pastikan baris berikut ada dan tidak dikomentari:

[client] 
local-infile=1

Setelah selesai mengedit file, restart server MySQL untuk menerapkan perubahan:

sudo systemctl restart mysql

Aktifkan LOCAL pada Client MySQL:
Saat terhubung ke MySQL dari command line, pastikan opsi –local-infile diaktifkan:

mysql --local-infile -u username -p

Gantilah username dengan nama pengguna dan masukkan password MySQL Kamu.

SHOW VARIABLES LIKE 'local_infile';

Langkah 4: Impor Data Menggunakan LOAD DATA INFILE

Sekarang Kamu siap untuk mengimpor data. Gunakan perintah LOAD DATA INFILE untuk memuat data dari file .csv ke tabel MySQL:

Masuk ke MySQL:

mysql -u username -p

Gantilah username dengan nama pengguna MySQL Kamu.

Pilih Database yang Tepat:

USE your_database;

Gantilah your_database dengan nama database yang Kamu gunakan.

Jalankan Perintah LOAD DATA INFILE:

LOAD DATA LOCAL INFILE '/path/to/yourfile.csv'
INTO TABLE my_table
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(name, age, city);

Penjelasan:

  • FIELDS TERMINATED BY ‘,’: Menentukan bahwa kolom dipisahkan oleh koma.
  • ENCLOSED BY ‘”‘: Menentukan bahwa data mungkin diapit oleh tKamu kutip gKamu.
  • LINES TERMINATED BY ‘\n’: Menentukan bahwa baris baru dipisahkan oleh karakter newline.
  • IGNORE 1 LINES: Mengabaikan baris pertama jika itu adalah header.
  • (name, age, city): Menyebutkan nama kolom tabel yang sesuai dengan file .csv.

Langkah 5: Verifikasi Data yang Diimpor

Setelah perintah dijalankan, periksa data di tabel untuk memastikan data telah diimpor dengan benar:

SELECT * FROM my_table;

Troubleshooting
Jika Kamu mengalami masalah, berikut adalah beberapa tips untuk memperbaikinya:

  • Periksa Format File
    Pastikan file .csv memiliki format yang benar sesuai dengan perintah LOAD DATA INFILE.
  • Periksa Hak Akses
    Pastikan Kamu memiliki hak akses yang sesuai untuk mengimpor data dan menggunakan LOAD DATA LOCAL INFILE.
  • Periksa Log MySQL
    Log MySQL dapat memberikan informasi tambahan tentang kesalahan yang mungkin terjadi.

Cara mengonversi file .tsv (Tab-Separated Values) ke .csv (Comma-Separated Values) Menggunakan sed di Linux

sed (stream editor) adalah aplikasi default yang diinstal secara otomatis di sebagian besar distribusi Linux, termasuk Ubuntu. Ini adalah alat baris perintah yang sangat berguna untuk memproses dan mengedit teks dalam file.

Dengan sed, Anda dapat melakukan berbagai operasi pengeditan teks seperti pencarian dan penggantian, penghapusan baris, penyisipan teks, dan banyak lagi.

Untuk memastikan sed tersedia di sistem Ubuntu Anda, Anda dapat memeriksanya dengan menjalankan perintah berikut di terminal:

sed --version

Jika sed sudah terinstal, perintah ini akan menampilkan versi sed yang saat ini terpasang di sistem Anda. Sed dapat digunakan untuk mengganti tab dengan koma:

sed 's/\t/,/g' /path/to/yourfile.tsv > /path/to/yourfile.csv

Kesimpulan

Mengimpor data ke MySQL menggunakan file .csv di server Linux adalah proses yang efisien jika Kamu mengikuti langkah-langkah di atas. Dengan menggunakan perintah LOAD DATA INFILE, Kamu dapat dengan cepat memuat data ke dalam tabel MySQL, menghemat waktu dan usaha dibandingkan dengan metode manual. Pastikan untuk memeriksa konfigurasi dan format file agar proses impor berjalan lancar.

Kamu juga bisa mempelajari perintah-perintah yang sering digunakan di Linux disini Perintah Dasar Linux yang Wajib Kamu Ketahui

Buku Dasar-Dasar Pemrograman Web (Sandhika Galih & Acep Hendra).

Iklan Produk Iklan Produk

Dapatkan penawaran menarik di sini! (klik pada foto buku)