Tutorial Belajar MySQL: Cara Menjalankan Query MySQL dari File Teks

Dalam sesi tutorial MySQL di Duniailkom kali ini kita akan membahas cara menjalankan query MySQL yang disimpan di dalam sebuah file teks. Query yang akan dibahas adalah perintah source MySQL. Tutorial ini juga bisa digunakan untuk menginput file hasil mysqldump.


Ketika merancang sebuah aplikasi, ada kalanya kita harus menjalankan query secara berulang atau perlu menyimpan perintah query untuk digunakan di lain waktu. Daripada mengetik manual, akan lebih praktis jika query tersebut disimpan dan dijalankan dari file teks external.

Terdapat 2 cara untuk menjalankan query MySQL dari sebuah file, yakni dari luar MySQL Client (tidak perlu login), atau dari dalam MySQL Client (menggunakan perintah source).


Mempersiapkan Query MySQL

Langsung saja kita masuk ke praktek. Kali ini saya akan menjalankan query pembuatan 1 database dengan 2 buah tabel (berserta isinya) dari sebuah file teks. Berikut adalah perintah query yang akan saya gunakan:

DROP DATABASE IF EXISTS mahasiswa;
CREATE DATABASE mahasiswa;
USE mahasiswa;
 
DROP TABLE IF EXISTS daftar_dosen;
CREATE TABLE daftar_dosen (
            NIP CHAR(10) PRIMARY KEY,
            nama_dosen VARCHAR(50) NOT NULL,
            no_hp CHAR(13),
            alamat VARCHAR(100))
            collate utf8_general_ci;
 
INSERT INTO daftar_dosen VALUES 
('0160436012','Sabrina Sari','0812349900','Pekanbaru');         
INSERT INTO daftar_dosen VALUES 
('0260432002','Maya Ari Putri','0812345234','Palembang');
INSERT INTO daftar_dosen VALUES 
('0275430005','Susi Indriani','0812656532','Palembang');
INSERT INTO daftar_dosen VALUES 
('0480432066','Tia SariSantrini','0812451177','Padang');
INSERT INTO daftar_dosen VALUES 
('0576431001','M. Siddiq','0812979005','Jakarta');
INSERT INTO daftar_dosen VALUES 
('0770435006','Rubin Hadi','0812567678','Papua');
INSERT INTO daftar_dosen VALUES 
('0869437003','Arif Mustalifah','0812338877','Aceh');
INSERT INTO daftar_dosen VALUES 
('1080432007','Arif Budiman','0812456345','Jakarta');
 
DROP TABLE IF EXISTS mata_kuliah;
CREATE TABLE mata_kuliah (
            kode_matkul CHAR(6) PRIMARY KEY,
            nama_matkul VARCHAR(50) NOT NULL,
            jumlah_SKS TINYINT UNSIGNED DEFAULT '2',
            semester TINYINT,
            NIP_dosen CHAR(10))
            collate utf8_general_ci;
 
INSERT INTO mata_kuliah VALUES 
('MATDAS','Matematika Dasar',4,1,'0160436012');
INSERT INTO mata_kuliah VALUES 
('FISDAS','Fisika Dasar',2,1,'0480432066');
INSERT INTO mata_kuliah VALUES 
('TEKKOM','Teknik Kompilasi',2,6,'0480432066');
INSERT INTO mata_kuliah VALUES 
('JARKOM','Jaringan Komputer',3,3,'0770435006');
INSERT INTO mata_kuliah VALUES 
('DTBASE','Database',4,4,'0275430005');
INSERT INTO mata_kuliah VALUES 
('SISOPR','Sistem Operasi',2,4,'0160436012');
INSERT INTO mata_kuliah VALUES 
('MIKROP','Mikro Prosesor',2,5,'0480432066');

Perintah query diatas cukup panjang, tetapi sebenarnya sangat sederhana. Jika anda telah mempelajari tutorial MySQL dasar di Duniailkom, tidak akan menemui kendala dalam memahami perintah diatas.

Query tersebut dapat dikelompokkan menjadi 3 bagian: pembuatan database mahasiswa, pembuatan tabel daftar_dosen beserta isinya, dan pembuatan tabel mata_kuliah beserta isinya. Database dan tabel ini merupakan contoh tabel yang saya gunakan ketika membahas Cara Menampilkan Data dari Tabel MySQL (SELECT).

Sebelum membuat database dan tabel, saya menambahkan query DROP DATABASE IF EXISTS dan DROP TABLE IF EXISTS. Kedua perintah ini berfungsi untuk mengapus database dan tabel yang bernama sama (jika sudah ada). Dengan demikian, setiap kali kita menjalankan query diatas, database dan tabel yang sudah ada akan dihapus secara otomatis. Perintah ini digunakan untuk mengatasi error yang terjadi apabila sebelumnya sudah terdapat database yang juga bernama mahasiswa.

Query collate utf8_general_ci ditambahkan untuk memastikan karakter set yang digunakan adalah utf8_general_ci. Secara sederhana, ini berfungsi agar tidak terjadi error ketika melakukan operasi perbandingan string (error: Illegal mix of collations).

Setelah pembuatan tabel, saya menggunakan query INSERT INTO untuk menginput beberapa data ke dalam tabel tersebut.

Perintah diatas sebenarnya juga bisa dijalankan baris demi baris (jika anda ingin menginputnya secara manual), namun seperti judul tutorial, kita akan mencoba menjalankan seluruh query tersebut dari sebuah file text.


Membuat File Query

Langkah selanjutnya adalah membuat file text untuk menyimpan query diatas. Silahkan gunakan text editor seperti Notepad (bawaan windows) atau Notepad++, lalu save ke dalam folder bin dimana aplikasi MySQL berada.

Sebagai contoh, jika anda mengikuti tutorial MySQL di duniailkom, file instalasi MySQL akan berada di folder D:\MySQL\bin atau D:\MySQL 5.6\bin. Namun apabila anda menggunakan setingan default pada saat menginstall MySQL, maka folder aplikasi MySQL ini akan berada di C:\Program Files\MySQL\MySQL Server 5.6.

Extension dari file ini tidak menjadi masalah, anda bisa menggunakan .txt, atau .sql (lebih umum). Kali ini saya akan menyimpannya sebagai mahasiswa.txt.

File query external MySQL

Dalam tutorial ini saya menggunakan extension .txt hanya untuk memperlihatkan bahwa nama extension tidak berpengaruh. Menggunakan nama file mahasiswa.sql memang lebih umum digunakan untuk menyimpan query MySQL.

Cara Menjalankan Query MySQL dari File Teks

Sekarang kita tinggal menjalankan file tersebut ke dalam MySQL. Terdapat 2 alternatif, dari luar MySQL, atau dari dalam MySQL Client.

Pertama, saya akan menggunakan cara dari luar MySQL. Jalankan MySQL Server  (jika belum aktif), lalu gunakan cmd windows untuk masuk ke dalam folder bin instalasi MySQL (tempat dimana file mahasiswa.txt berada). Kemudian gunakan perintah berikut:

mysql -u root < mahasiswa.txt

Dalam pertintah diatas, saya menggunakan user 'root' tanpa password. Jika anda menggunakan user lain dan menggunakan password, formatnya adalah sebagai berikut:

mysql -u nama_user -p password < mahasiswa.txt

Jika semuanya berjalan normal, MySQL tidak akan mengeluarkan pesan apa-apa, seperti tampilan berikut:

Cara menjalankan query external MySQL

Untuk memastikan, silahkan login ke MySQL Client, dan periksa database mahasiswa beserta tabelnya:

D:\MySQL 5.6\bin>mysql -u root
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 20
Server version: 5.6.22 MySQL Community Server (GPL)
 
Copyright (c) 2000, 2014, Oracle and/or its affiliates. 
All rights reserved.
 
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
 
Type 'help;' or '\h' for help. Type '\c' to clear the current 
input statement.
 
mysql> SHOW databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| data               |
| mahasiswa          |
| mysql              |
| performance_schema |
+--------------------+
6 rows in set (0.00 sec)
 
mysql> USE mahasiswa;
Database changed
mysql> SELECT * FROM daftar_dosen;
+------------+-------------------+------------+-----------+
| NIP        | nama_dosen        | no_hp      | alamat    |
+------------+-------------------+------------+-----------+
| 0160436012 | Sabrina Sari      | 0812349900 | Pekanbaru |
| 0260432002 | Maya Ari Putri    | 0812345234 | Palembang |
| 0275430005 | Susi Indriani     | 0812656532 | Palembang |
| 0480432066 | Tia Sari Santrini | 0812451177 | Padang    |
| 0576431001 | M. Siddiq         | 0812979005 | Jakarta   |
| 0770435006 | Rubin Hadi        | 0812567678 | Papua     |
| 0869437003 | Arif Mustalifah   | 0812338877 | Aceh      |
| 1080432007 | Arif Budiman      | 0812456345 | Jakarta   |
+------------+-------------------+------------+-----------+
8 rows in set (0.00 sec)
 
mysql> SELECT * FROM mata_kuliah;
+-------------+-------------------+------------+----------+------------+
| kode_matkul | nama_matkul       | jumlah_SKS | semester | NIP_dosen  |
+-------------+-------------------+------------+----------+------------+
| DTBASE      | Database          |          4 |        4 | 0275430005 |
| FISDAS      | Fisika Dasar      |          2 |        1 | 0480432066 |
| JARKOM      | Jaringan Komputer |          3 |        3 | 0770435006 |
| MATDAS      | Matematika Dasar  |          4 |        1 | 0160436012 |
| MIKROP      | Mikro Prosesor    |          2 |        5 | 0480432066 |
| SISOPR      | Sistem Operasi    |          2 |        4 | 0160436012 |
| TEKKOM      | Teknik Kompilasi  |          2 |        6 | 0480432066 |
+-------------+-------------------+------------+----------+------------+
7 rows in set (0.00 sec)

Seperti yang terlihat, database mahasiswa, tabel daftar_dosen dan tabel mata_kuliah sudah berhasil dibuat.

Cara kedua adalah menggunakan query source dari dalam MySQL Client. Untuk menjalankannya, kita harus masuk ke dalam MySQL Client. Sebagai persiapan, saya akan menghapus database mahasiswa yang berasal dari perintah sebelumnya

mysql> DROP database mahasiswa;
Query OK, 2 rows affected (0.09 sec)

Kemudian, gunakan perintah berikut:

mysql> source mahasiswa.txt

Seluruh query pada file akan mahasiswa.txt dijalankan seperti tampilan berikut:

Cara menjalankan query external MySQL 2

Hasil: Query OK, 1 row affected (0.02 sec) adalah feedback atau penjelasan mengenai perintah yang berjalan. Anda juga akan melihat terdapat beberapa warning seperti: Query OK, 0 rows affected, 1 warning (0.00 sec). Warning ini disebabkan perintah DROP TABLE IF EXISTS yang memang akan menghasilkan peringatan apabila tabel tersebut tidak tersedia, jadi peringatan ini boleh diabaikan.

Sebagai langkah terakhir, anda bisa memeriksa apakah database mahasiswa berserta tabelnya sudah terbentuk.


Meletakkan perintah query di dalam file teks seperti yang kita bahas disini sangat praktis untuk query yang berulang atau jika anda sering gonta-ganti komputer. File query tersebut juga bisa digunakan sebagai 'master database', sehingga jika kita melakukan experiment terjadi sesuatu (misalnya ada data yang terhapus), tinggal menjalankannya kembali.

11 Comments

  1. Erlangga
    03 Aug 15
    • Andre
      03 Aug 15
      • Erlangga
        04 Aug 15
  2. Martin
    12 Jan 16
    • Andre
      14 Jan 16
  3. SA
    23 Sep 16
    • Andre
      24 Sep 16
    • Rasid Azis
      16 Jan 18
  4. Rizky Wahyudi
    25 Oct 16
  5. masyanto
    14 Sep 22
    • Andre
      14 Sep 22

Add Comment