Tutorial ini menunjukkan cara menggunakan pernyataan LOAD DATA INFILE untuk mengimpor file CSV ke tabel MySQL
Pernyataan LOAD DATA INFILE memungkinkan Anda membaca data dari file teks dan mengimpor data file ke tabel database dengan sangat cepat
Sebelum mengimpor file, Anda perlu menyiapkan yang berikut ini
- Tabel database tempat data dari file akan diimpor
- File CSV dengan data yang cocok dengan jumlah kolom tabel dan tipe data di setiap kolom
- Akun, yang terhubung ke server database MySQL, memiliki hak istimewa FILE dan INSERT
Misalkan kita memiliki tabel bernama discounts dengan struktur berikut
Kami menggunakan pernyataan CREATE TABLE untuk membuat tabel discounts sebagai berikut
CREATE TABLE discounts ( id INT NOT NULL AUTO_INCREMENT, title VARCHAR(255) NOT NULL, expired_date DATE NOT NULL, amount DECIMAL(10 , 2 ) NULL, PRIMARY KEY (id) );
Code language: SQL (Structured Query Language) (sql)File discounts.csv berikut berisi baris pertama sebagai judul kolom dan tiga baris data lainnya
Pernyataan berikut mengimpor data dari file
LOAD DATA INFILE 'c:/tmp/discounts.csv' INTO TABLE discounts FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 ROWS;
Code language: SQL (Structured Query Language) (sql)_0 ke dalam tabel discountsLOAD DATA INFILE 'c:/tmp/discounts.csv' INTO TABLE discounts FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 ROWS;
Code language: SQL (Structured Query Language) (sql)_Bidang file diakhiri dengan koma yang ditunjukkan dengan
LOAD DATA INFILE 'c:/tmp/discounts.csv' INTO TABLE discounts FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 ROWS;
LOAD DATA INFILE 'c:/tmp/discounts.csv' INTO TABLE discounts FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 ROWS;
Code language: SQL (Structured Query Language) (sql)3 'Setiap baris file CSV diakhiri dengan karakter baris baru yang ditunjukkan dengan
LOAD DATA INFILE 'c:/tmp/discounts.csv' INTO TABLE discounts FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 ROWS;
Code language: SQL (Structured Query Language) (sql)4Karena file tersebut memiliki baris pertama yang berisi judul kolom, yang seharusnya tidak diimpor ke dalam tabel, oleh karena itu kita mengabaikannya dengan menentukan opsi
LOAD DATA INFILE 'c:/tmp/discounts.csv' INTO TABLE discounts FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 ROWS;
Code language: SQL (Structured Query Language) (sql)5Sekarang, kita dapat memeriksa tabel discounts_ untuk melihat apakah data telah diimpor
SELECT * FROM discounts;
Mengubah data saat mengimpor
Terkadang format data tidak sesuai dengan kolom target dalam tabel. Dalam kasus sederhana, Anda dapat mengubahnya dengan menggunakan klausa
LOAD DATA INFILE 'c:/tmp/discounts.csv' INTO TABLE discounts FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 ROWS;
Code language: SQL (Structured Query Language) (sql)7 dalam pernyataan LOAD DATA INFILEMisalkan kolom tanggal kedaluwarsa di file
LOAD DATA INFILE 'c:/tmp/discounts.csv' INTO TABLE discounts FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 ROWS;
Code language: SQL (Structured Query Language) (sql)_9 dalam formatSELECT * FROM discounts;
0Saat mengimpor data ke tabel discounts, kita harus mengubahnya menjadi format tanggal MySQL dengan menggunakan fungsi str_to_date() sebagai berikut
LOAD DATA INFILE 'c:/tmp/discounts_2.csv' INTO TABLE discounts FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 ROWS (title,@expired_date,amount) SET expired_date = STR_TO_DATE(@expired_date, '%m/%d/%Y');
Code language: SQL (Structured Query Language) (sql)Mengimpor file dari klien ke server basis data MySQL jarak jauh
Dimungkinkan untuk mengimpor data dari klien (komputer lokal) ke server database MySQL jarak jauh menggunakan pernyataan LOAD DATA INFILE
Saat Anda menggunakan opsi
SELECT * FROM discounts;
3 di LOAD DATA INFILE , program klien membaca file pada klien dan mengirimkannya ke server MySQL. File akan diunggah ke folder sementara sistem operasi server database e. g. ,SELECT * FROM discounts;
5 di Windows atauSELECT * FROM discounts;
6 di Linux. Folder ini tidak dapat dikonfigurasi atau ditentukan oleh MySQLMari kita lihat contoh berikut
LOAD DATA LOCAL INFILE 'c:/tmp/discounts.csv' INTO TABLE discounts FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 ROWS;
Code language: SQL (Structured Query Language) (sql)Satu-satunya perbedaan adalah
SELECT * FROM discounts;
_3 opsi dalam pernyataan itu. Jika Anda memuat file CSV besar, Anda akan melihat bahwa dengan opsiSELECT * FROM discounts;
3, akan sedikit lebih lambat untuk memuat file karena butuh waktu untuk mentransfer file ke server databaseAkun yang terhubung ke server MySQL tidak perlu memiliki hak istimewa FILE untuk mengimpor file saat Anda menggunakan opsi
SELECT * FROM discounts;
Mengimpor file dari klien ke server database jarak jauh menggunakan
LOAD DATA INFILE 'c:/tmp/discounts_2.csv' INTO TABLE discounts FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 ROWS (title,@expired_date,amount) SET expired_date = STR_TO_DATE(@expired_date, '%m/%d/%Y');
Code language: SQL (Structured Query Language) (sql)0 memiliki beberapa masalah keamanan yang harus Anda waspadai untuk menghindari potensi risiko keamananMengimpor file CSV menggunakan MySQL Workbench
Meja kerja MySQL menyediakan alat untuk mengimpor data ke dalam tabel. Ini memungkinkan Anda untuk mengedit data sebelum melakukan perubahan
Berikut ini adalah langkah-langkah yang Anda inginkan untuk mengimpor data ke dalam tabel
Buka tabel tempat data dimuat
Klik tombol Impor, pilih file CSV dan klik tombol Buka
Tinjau data, klik tombol Terapkan
Meja kerja MySQL akan menampilkan dialog “Terapkan SQL Script ke Database”, klik tombol Terapkan untuk memasukkan data ke dalam tabel
Kami telah menunjukkan kepada Anda cara mengimpor CSV ke tabel MySQL menggunakan
LOAD DATA INFILE 'c:/tmp/discounts_2.csv' INTO TABLE discounts FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 ROWS (title,@expired_date,amount) SET expired_date = STR_TO_DATE(@expired_date, '%m/%d/%Y');
Code language: SQL (Structured Query Language) (sql)0 dan menggunakan MySQL Workbench. Dengan teknik ini, Anda dapat memuat data dari format file teks lain seperti tab-delimited