Anda di halaman 1dari 7

Tutorial Belajar MySQL Part 20: Cara

Menambahkan data dari File (LOAD


DATA INFILE)
20 Apr 13 | Andre | Tutorial MySQL | 73 Comments
Pada tutorial MySQL sebelumnya: Cara Menambahkan data ke dalam Tabel
(INSERT), kita menambahkan data langsung pada cmd MySQL. Untuk keperluan
menambahkan data dalam jumlah besar, akan lebih efisien dan mudah jika data
tersebut kita siapkan dalam bentuk file terlebih dahulu, dan kemudian diload ke
dalam tabel. Untuk keperluan ini MySQL menyediakan query LOAD DATA INFILE.

Mempersiapkan Tabel Contoh: daftar_dosen


Sebagai tabel contoh untuk mempelajari cara menambahkan data
menggunakan query LOAD DATA INFILE, kita akan mempersiapkan
tabel daftar_dosen, dengan query sebagai berikut:
1 mysql> SHOW DATABASES;
+--------------------+
2
3 | Database           |
+--------------------+
4 | information_schema |
5 | mahasiswa          |
6 | mysql              |
7 | performance_schema |
| test               |
8 +--------------------+
9 5 rows in set (0.08 sec)
10  
11 mysql> USE mahasiswa;
12 Database changed
13  
14 mysql> CREATE TABLE daftar_dosen (NIP CHAR(10) PRIMARY KEY,
nama_dosen VARCHAR(50) NOT NULL, no_hp CHAR(13),
15 alamat VARCHAR(100));
16 Query OK, 0 rows affected (0.16 sec)
17  
18 mysql> DESC daftar_dosen;
19 +------------+--------------+------+-----+---------+-------+
| Field      | Type         | Null | Key | Default | Extra |
20
+------------+--------------+------+-----+---------+-------+
21
| NIP        | char(10)     | NO   | PRI | NULL    |       |
22
| nama_dosen | varchar(50)  | NO   |     | NULL    |       |
23
| no_hp      | char(13)     | YES  |     | NULL    |       |
24
| alamat     | varchar(100) | YES  |     | NULL    |       |
25 +------------+--------------+------+-----+---------+-------+
26 4 rows in set (0.14 sec)
27
28
29
30

Cara Penulisan dasar query LOAD DATA INFILE


Query MySQL: LOAD DATA INFILE digunakan untuk menginput data kedalam
tabel dimana data yang diinput berasal dari sebuah file. Kita akan mempelajari
cara penggunaannya dengan contoh dalam tutorial kali ini.
Query lengkap dari LOAD DATA INFILE sesuai dari manual MySQL adalah
sebagai berikut:
LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name'
    [REPLACE | IGNORE]
    INTO TABLE tbl_name
    [CHARACTER SET charset_name]
    [{FIELDS | COLUMNS}
        [TERMINATED BY 'string']
        [[OPTIONALLY] ENCLOSED BY 'char']
        [ESCAPED BY 'char']
    ]
    [LINES
        [STARTING BY 'string']
        [TERMINATED BY 'string']
    ]
    [IGNORE number {LINES | ROWS}]
    [(col_name_or_user_var,...)]
    [SET col_name = expr,...]
Dapat kita lihat bahwa MySQL menyediakan banyak pilihan opsional (dalam
tanda kurung siku) yang dapat digunakan tergantung kebutuhan. Dalam
tutorial MySQL ini, kita akan membahas beberapa diantaranya.

Cara Penggunaan query LOAD DATA INFILE


dalam MySQL
Agar lebih gampang dipahami, kita akan langsung mencoba query LOAD DATA
INFILE, dengan membuat sebuah file input_data.txt. Anda bebas untuk
meletakkan file tersebut. Pada contoh ini, saya akan menempatkannya pada
folder “D:\MySQL\”.
Buka notepad, lalu tuliskan data berikut ke dalam file text tersebut, dan save
sebagai input_data.txt:
"0576431001","M. Siddiq","0812979005","Jakarta"
"0770435006","Siswanto","0812567765","Medan"
"0869437003","Andi Mulia","0812332564","Padang"
"0260432002","Maya Ari Putri","0812345234","Palembang"
"1080432007","Arif Budiman","0812456345","Makasar"
"0275430005","Susi Indriani","0812656532","Bogor"
Berikut tampilan file input_data.txt

Pada saat membuat file, pastikan menekan Enter di akhir baris untuk membuat
baris baru. Selanjutnya buka MySQL Client command prompt dan jalankan query
berikut:
1
2 mysql> LOAD DATA INFILE 'D:\MySQL\input_data.txt'
3 INTO TABLE daftar_dosen FIELDS TERMINATED BY ','
4 ENCLOSED BY '"' LINES TERMINATED BY '\r\n';
5 Query OK, 6 rows affected (0.05 sec)
Records: 6  Deleted: 0  Skipped: 0  Warnings: 0
6
7  
mysql> SELECT * FROM daftar_dosen;
8 +------------+----------------+------------+-----------+
9 | NIP        | nama_dosen     | no_hp      | alamat    |
10 +------------+----------------+------------+-----------+
11 | 0260432002 | Maya Ari Putri | 0812345234 | Palembang |
| 0275430005 | Susi Indriani  | 0812656532 | Bogor     |
12 | 0576431001 | M. Siddiq      | 0812979005 | Jakarta   |
13 | 0770435006 | Siswanto       | 0812567765 | Medan     |
14 | 0869437003 | Andi Mulia     | 0812332564 | Padang    |
15 | 1080432007 | Arif Budiman   | 0812456345 | Makasar   |
+------------+----------------+------------+-----------+
16
6 rows in set (0.00 sec)
17
18
Mari kita bahas tentang penulisan perintah LOAD DATA INFILE diatas:
 Hal pertama yang kita tulis setelah perintah LOAD DATA INFILE adalah
lokasi tempat file input_data.txt berada. Dalam query diatas, file tersebut
berada pada D:\MySQL\input_data.txt. Tetapi karena didalam MySQL
karakter ‘\’merupakan karakter khusus, maka penulisannya harus di-double,
sehingga menjadi D:\\MySQL\\input_data.txt. Jika lokasi file anda berbeda,
tinggal menyesuaikan saja.
 Setelah lokasi file, selanjutnya kita menambahkan perintah ke tabel mana
file tersebut akan diinput. Pada contoh kita, tabel tersebut
adalah daftar_dosen, sehingga ditulis …INTO TABLE daftar_dosen…
 Perintah FIELDS TERMINATED BY ‘,’  dimaksudkan sebagai instruksi
pada MySQL bahwa setiap kolom pada input_data.txt dipisahkan oleh
karakter koma ‘,’. Namun tidak harus tanda koma, tanda lain seperti titik,
tanda ‘|’, maupun karakter tab bisa kita gunakan sebagai tanda pemisah,
dan instruksikan MySQL untuk menggunakan tanda tersebut sebagai
penanda kolom.
 Instruksi ENCLOSED BY ‘”‘ memberitahu MySQL agar menghapus
penanda kutip dua (“) dari tiap kolom. Namun jika pada daftar_dosen.txt kita
tidak menambahkan tanda kutip dua diawal data, MySQL tetap akan
menerima data tersebut.
 Pada akhir query, perintah …LINES TERMINATED BY
‘\r\n’ menginstruksikan MySQL agar tiap baris diakhiri dengan karakter new
line dan carriage return. Karakter khusus ini terbentuk ketika kita
menekan Enter pada keyboard untuk pindah baris pada notepad. ‘\r‘
merupakan cara penulisan untuk karakter carriage return, sedangkan ‘\n‘
adalah karakter new line.

Berbagai pilihan instruksi dari query LOAD DATA


INFILE
Jika kita melihat format penulisan query LOAD DATA INFILE, terdapat
beberapa pilihan opsi lainnya, kita akan membahas beberapa diantaranya:
Penjelasan opsi LOCAL
Opsi LOCAL disini digunakan untuk menentukan lokasi dari text yang diinput.
Jika kita menuliskan LOCAL, maka file text akan dicari dalam komputer Client
MySQL. Namun jika tidak ditulis, maka lokasi file akan dicari pada
komputer MySQL Server. Karena kita mengistall MySQL pada satu komputer,
opsi LOCAL tidak akan berpengaruh, karena MySQL Server dan MySQL
Client berada pada komputer yang sama, dan juga folder yang sama (file
mysqld.exe adalah MySQL Server, dan file mysql.exe adalah MySQL Client).
Contoh penggunaan query-nya: LOAD DATA LOCAL INFILE ‘path_to_file’
Penjelasan opsi [REPLACE | IGNORE]
Opsi [REPLACE | IGNORE] berkaitan dengan cara MySQL menangani duplikasi
data pada kolom PRIMARY KEY. Jika opsi REPLACE digunakan, maka saat
ditemukan data yang sama, maka data yang baru akan menimpa data lama,
namun jika menggunakan opsi IGNORE, data yang baru akan diabaikan
dan MySQL akan menjalankan baris berikutnya.
Penjelasan opsi LINES STARTING BY ‘string’ dan
TERMINATED BY ‘string’
Opsi ini digunakan untuk menentukan awal dari data dan akhir dari data. String
disini dapat berupa karakter seperti “,” atau “*”, maupun karakter new
line dan carriage return.
Penggunaan karakter-karakter khusus dapat dilihat dari tabel dibawah ini:

Penulisan Penjelasan Karakter

\0 Karakter ASCII untuk NULL (0x00)

\' Karakter tanda kutip satu (')

\" Karakter tanda kutip dua(")

\b Karakter backspace

\n Karakter newline (linefeed)

\r Karakter carriage return

\t Karakter untuk tab

\Z ASCII 26 (Control+Z)

\\ Karakter untuk backslash (\)

\% Karakter untuk tanda persen (%)

\_ Karakter untuk tanda garis bawah (_)

Penjelasan opsi IGNORE number


Opsi IGNORE dapat digunakan untuk mengistruksikan MySQL agar melompati
beberapa baris dan memulai dari baris ke sekian. Hal ini berguna jika pada awal
text merupakan penjelasan nama kolom.

Contoh Cara Penggunaan query LOAD DATA


INFILE dengan opsi LOCAL, REPLACE dan
LINES STARTING BY
Agar memahami penggunaan LOCAL, REPLACE dan LINES STARTING BY, kita
akan mencoba menggunakan query LOAD DATA INFILE untuk file kedua
berikut.
Kali ini saya akan membuat file data_lagi.txt, dengan isian sebagai berikut:
NIP                  Nama          No Hp          Kota
**'0876439004'   'Mulyono'       '0812912312'  'Semarang'|
**'0770435006'   'Rubin Hadi'    '0812567678'  'Papua'|
**'0869437003'   'Mustalifah'    '0812338877'  'Aceh'|
**'0160436012'   'Sabrina Sari'  '0812349900'  'Pekanbaru'|
**'0480432066'   'Tia Santrini'  '0812451177'  'Padang'|
Berikut tampilan file input_data.txt

Perhatikan bahwa setiap baris diawali dengan tanda bintang dua kali (**),
diakhiri dengan karakter pipa (|) dan setiap kolom dibatasi dengan tab. Juga pada
baris ke 2 dan 3 akan terdapat duplikasi untuk kolom NIP dengan data
sebelumnya. Baris pertama dari text adalah judul kolom.
Agar file diatas dapat diproses oleh MySQL, kita perlu menggunakan perintah
tambahan. Penulisan query untuk menginput file ini adalah sebagai berikut:

1 mysql> SELECT * FROM daftar_dosen;


+------------+----------------+------------+-----------+
2 | NIP        | nama_dosen     | no_hp      | alamat    |
3 +------------+----------------+------------+-----------+
4 | 0260432002 | Maya Ari Putri | 0812345234 | Palembang |
5 | 0275430005 | Susi Indriani  | 0812656532 | Bogor     |
6 | 0576431001 | M. Siddiq      | 0812979005 | Jakarta   |
| 0770435006 | Siswanto       | 0812567765 | Medan     |
7 | 0869437003 | Andi Mulia     | 0812332564 | Padang    |
8 | 1080432007 | Arif Budiman   | 0812456345 | Makasar   |
9 +------------+----------------+------------+-----------+
10 6 rows in set (0.00 sec)
11  
12 mysql> LOAD DATA LOCAL INFILE 'D:\MySQL\data_lagi.txt' REPLACE
INTO TABLE daftar_dosen FIELDS TERMINATED BY '\t'
13 ENCLOSED BY '\'' LINES STARTING BY '**' TERMINATED BY '|'
14 IGNORE 1 LINES;
15 Query OK, 6 rows affected (0.02 sec)
16
17
18
Records: 4  Deleted: 2  Skipped: 0  Warnings: 0
19
20  
mysql> SELECT * FROM daftar_dosen;
21 +------------+----------------+------------+-----------+
22 | NIP        | nama_dosen     | no_hp      | alamat    |
23 +------------+----------------+------------+-----------+
24 | 0160436012 | Sabrina Sari   | 0812349900 | Pekanbaru |
| 0260432002 | Maya Ari Putri | 0812345234 | Palembang |
25 | 0275430005 | Susi Indriani  | 0812656532 | Bogor     |
26 | 0480432066 | Tia Santrini   | 0812451177 | Padang    |
27 | 0576431001 | M. Siddiq      | 0812979005 | Jakarta   |
28 | 0770435006 | Rubin Hadi     | 0812567678 | Papua     |
29 | 0869437003 | Mustalifah     | 0812338877 | Aceh      |
| 1080432007 | Arif Budiman   | 0812456345 | Makasar   |
30 +------------+----------------+------------+-----------+
31 8 rows in set (0.00 sec)
32
33
34
Query diatas menambahkan 4 baris dan menghapus 2 baris, hal ini dapat dilihat
setelah query dijalankan Records: 4  Deleted: 2  Skipped: 0  Warnings: 0. Hal ini
dikarenakan opsi REPLACE yang menggantikan 2 baris yang memiliki NIP yang
sama.

Dalam tutorial belajar MySQL kali ini kita telah membahas cara menambahkan
data ke tabel MySQL dari sebuah file text external menggunakan query LOAD
DATA INFILE. Melanjutkan pembahasan mengenai query dasar MySQL,
berikutnya kita akan membahas tentang Cara Menampilkan Data MySQL dengan
query SELECT.

Anda mungkin juga menyukai