Query insert atau menambah 1 juta record data ke mysql

ini adalah contoh query sql untuk insert atau menambah record ke mysql dan saya mencoba menjalankan memakai SQLyog, silahkan dikembangkan menurut keperluan masing2 yach 🙂


DROP TABLE IF EXISTS foo;
CREATE TABLE `foo` (
  `id_penghuni` INT(10) NOT NULL AUTO_INCREMENT,
  `id_rusun` INT(10) NOT NULL,
  `id_tipe` INT(10) DEFAULT NULL,
  `id_status` INT(10) NOT NULL ,
  `no_ktp` VARCHAR(20) NOT NULL,
  `no_kk` VARCHAR(25) NOT NULL,
  `no_surat_nikah` VARCHAR(25) NOT NULL,
  `nama_penghuni` VARCHAR(50) NOT NULL,
  `tgl_daftar` DATE NOT NULL,
  `agama` VARCHAR(7) NOT NULL,
  `jenis_kelamin` VARCHAR(8) NOT NULL,
  `tgl_lahir` DATE NOT NULL,
  `pendidikan` VARCHAR(10) DEFAULT NULL,
  `pekerjaan` VARCHAR(20) DEFAULT NULL,
  `alamat` TEXT NOT NULL,
  `status_pendaftaran` VARCHAR(15) NOT NULL DEFAULT 'umum',
  `no_rekening_tabungan` VARCHAR(20) NOT NULL,
  `telp` VARCHAR(25) DEFAULT NULL,
  `keterangan` TEXT,
  `flag` SMALLINT(1) NOT NULL DEFAULT '1',
  `last_update` DATETIME NOT NULL,
  `create_date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id_penghuni`),
  KEY `id_status` (`id_status`),
  KEY `id_rusun` (`id_rusun`)
) ENGINE=INNODB AUTO_INCREMENT=5000035 DEFAULT CHARSET=latin1;

DROP PROCEDURE IF EXISTS load_foo_test_data;

DELIMITER #
CREATE PROCEDURE load_foo_test_data()
BEGIN

DECLARE v_max INT UNSIGNED DEFAULT 1000000;
DECLARE v_counter INT UNSIGNED DEFAULT 0;

  TRUNCATE TABLE foo;
  START TRANSACTION;
  WHILE v_counter < v_max DO
  SET @id:= '44556677'+v_counter;
  SET @id2:= '66778899'+v_counter;
  SET @NAMA:= CONCAT('GALIHX'," ",v_counter);
  INSERT  INTO `penghuni`(`id_rusun`,`id_tipe`,`id_status`,`no_ktp`,`no_kk`,`no_surat_nikah`,`nama_penghuni`,`tgl_daftar`,`agama`,`jenis_kelamin`,`tgl_lahir`,`pendidikan`,`pekerjaan`,`alamat`,`status_pendaftaran`,`no_rekening_tabungan`,`telp`,`keterangan`,`flag`,`last_update`,`create_date`) VALUES (9000001,NULL,10000002,@id,@id2,'',@NAMA,'2015-06-14','Islam','L','1970-12-02','1','PNS','jakarta timur','umum','201225445',NULL,'',1,'0000-00-00 00:00:00','0000-00-00 00:00:00');
    SET v_counter=v_counter+1;
  END WHILE;
  COMMIT;
END #

DELIMITER ;

CALL load_foo_test_data();

SELECT * FROM penghuni;

2 comments

    1. SET @id:= ‘44556677’+v_counter adalah parameter yang dibuat unik untuk di isi kolom tertentu didalam perintah “INSERT” dibawahnya , yang nanti hasilnya itu 44556677,44556678, 44556679 dan seterusnya

Leave a reply to fahrizalcode Cancel reply