Home » Tips » [Tips] MySQL: Mengganti Tipe Tabel MyISAM ke InnoDB dengan SQL Procedure

[Tips] MySQL: Mengganti Tipe Tabel MyISAM ke InnoDB dengan SQL Procedure

Ok, Jumpa lagi dengan saya di kanal [Tips], mudah-mudahan setelah Tips ini, pengelola Virtuemagz akan mempertimbangkan penambahan kategori “Tips”. hehehehe….

Untuk mengganti tipe tabel (Engine) MyISAM ke InnoDB bisa ditempuh dengan berbagai macam cara, bisa menggunakan PHP untuk programming yang terhubung ke MYSQL, Bash, Python, dll.

Di Tips ini, saya merasa tertantang untuk menggunakan Native SQL Procedure, selain kita tidak perlu instalasi bahasa pemrograman server-side, sistem logic untuk mengganti tipe tabel berjalan di MySQL secara native dengan asumisi proses penggantian akan relatif lebih cepat.

Berikut SQL Script untuk membuat prosedurnya.

Sebelumnya, silahkan masuk ke MySQL dengan perintah “mysql -u<userdb> -p<passworddb> -h<hostdb> <namadatabase>” di console/terminal Anda.

Jika Anda sudah masuk, ditandai dengan adanya “mysql>” cursor, berarti Anda sudah siap untuk tahapan di bawah ini.

DROP PROCEDURE IF EXISTS alter_all_tables;
DELIMITER $$
CREATE PROCEDURE alter_all_tables()
BEGIN
DECLARE done INT DEFAULT FALSE;
DECLARE tblname VARCHAR(255);
DECLARE cur1 CURSOR FOR SELECT table_name FROM information_schema.tables;

OPEN cur1;

read_loop: LOOP
FETCH cur1 INTO tblname;
IF done THEN
LEAVE read_loop;
END IF;
SET @table_name = tblname;
SET @sql_text = CONCAT('ALTER TABLE `namadatabase`', '.' , @table_name, ' ENGINE=InnoDB;');

PREPARE stmt FROM @sql_text;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END LOOP;

CLOSE cur1;
END$$
DELIMITER ;

Setelah itu, panggil procedure alter_all_tables dengan cara berikut:

CALL alter_all_tables();

Selesai, Selamat mencoba.

2 Comments

  1. I was suggested this web site by my cousin. I am not sure whether
    this post is written by him as nobody else know such detailed about
    my problem. You’re incredible! Thanks!

Leave a Reply

Scroll To Top