Tips: export data sql to mysql in fast with php

Tips: export data sql to mysql in fast with php

255
0
SHARE

Proses pemindahan data dari SQL Server ke mysql dilakukan dengan cara sebagai berikut:

SQL -> dump manual to .sql -> mysql with exec or system (.bat)

  1. Proses dumping data dari SQL Server dilakukan secara manual agar dapat sesuai kebutuhan kita.
  2. Dari file dump, kemudian akan di ekspor ke mysql dengan fungsi ekspor yang tersedia. untuk mempermudah, saya menggunakan fungsi exec pada php. yaitu menjalankan sintax command prompt pada windows dengan php (import .sql). Jika fungsi exec tidak bisa, gunakan fungsi system() untuk menjalankan file “.bat” yang berisi sintax import “.sql”.Query mysql:
    dalam satu kali proses query insert, mysql mampu mengeksekusi sampai dengan 15.000 record. jika lebih dari itu, mysql tidak akan mengeksekusi dan akan menampilkan pesan error “mysql has gone away”. apa tuh artinya.? mungkin mysql lagi jalan-jalan.  :DINSERT INTO siswa VALUES
    (‘v1′,’v2′,’v3′,’v4′,’v5′,’v6′,’v7’),
    (‘v1′,’v2′,’v3′,’v4′,’v5′,’v6′,’v7’),
    (‘v1′,’v2′,’v3′,’v4′,’v5′,’v6′,’v7’),
    (‘v1′,’v2′,’v3′,’v4′,’v5′,’v6′,’v7’),
    (‘v1′,’v2′,’v3′,’v4′,’v5′,’v6′,’v7’),
    (‘v1′,’v2′,’v3′,’v4′,’v5′,’v6′,’v7’),
    (‘v1′,’v2′,’v3′,’v4′,’v5′,’v6′,’v7’),
    (‘v1′,’v2′,’v3′,’v4′,’v5′,’v6′,’v7’),
    (‘v1′,’v2′,’v3′,’v4′,’v5′,’v6′,’v7’),
    (‘v1′,’v2′,’v3′,’v4′,’v5′,’v6′,’v7’),
    (‘v1′,’v2′,’v3′,’v4′,’v5′,’v6′,’v7’),
    (‘v1′,’v2′,’v3′,’v4′,’v5′,’v6′,’v7’);Nah, jika value tersebut melebihi batas kemampuan mysql, maka mysql akan jalan-jalan. *loh… (Maksudnya error).Untuk itu, perlu adanya pembagian query per beberapa record. misal 10.000 record.INSERT INTO siswa VALUES
    (‘v1′,’v2′,’v3′,’v4′,’v5′,’v6′,’v7’),
    (‘v1′,’v2′,’v3′,’v4′,’v5′,’v6′,’v7’),
    (‘v1′,’v2′,’v3′,’v4′,’v5′,’v6′,’v7’),
    (‘v1′,’v2′,’v3′,’v4′,’v5′,’v6′,’v7’);INSERT INTO siswa VALUES
    (‘v1′,’v2′,’v3′,’v4′,’v5′,’v6′,’v7’),
    (‘v1′,’v2′,’v3′,’v4′,’v5′,’v6′,’v7’),
    (‘v1′,’v2′,’v3′,’v4′,’v5′,’v6′,’v7’),
    (‘v1′,’v2′,’v3′,’v4′,’v5′,’v6′,’v7’);*diakhiri dengan tanda “;”
  3. Import file dengan php
    • menggungakan exec()
      gunakan fungsi exec untuk menjalankan perintah command untuk mengimport data “.sql”.
      exec();
    • Menggunakan system()
      yaitu menjalankan file .bat (file yang digunakan untuk menjalankan perintah di command prompt).

Contoh export dengan php menggunakan fungsi system:


/*
Contoh => Memindahkan isi tabel biodata dari mysql ke tabel biodata di SQL.
*/
function GetBasePath() {
$path = __FILE__;
return substr($path, 0, strlen($path) - strlen(strrchr($path, "\")));
}

$dir = GetBasePath(); // Direktori file.
$mysqldir = ‘C:xamppmysqlbinmysql’;
$limit = 10000; // Limit jumlah record perQuery.
// ODBC
$odbcname = ‘operasional’;
$odbcuser = ‘sa’;
$odbcpass = ”;

// MySql
$myhost = ‘localhost’;
$myuser = ‘root’;
$mypass = ”;
$mydb = ‘siswa’;

// File dump & .bat
$File = “vmaster.sql”;
$eFile = “exec.bat”;

// Hitung Waktu
$time_start = microtime(true);
usleep(100);

// cek Koneksi SQL
$conc = odbc_connect($odbcname,$odbcuser,$odbcpass);
if ($conc)
{

$Data = “INSERT INTO biodata VALUES “;

$cek = odbc_exec($conc, “select count(*) AS total from biodata”);
$gi = odbc_result($cek, “total”);

$x = 1; // memberikan nomor pada setiap record.

$select = odbc_exec($conc, “select * from biodata”); //menampilkan semua daftar siswa
while(odbc_fetch_row($select)){ //Looping

//Definisi variabel data
$v1 = odbc_result($select, “ID”);
$v2 = odbc_result($select, “NIS”);
$v3 = odbc_result($select, “NAMA”);
$v4 = odbc_result($select, “TGL_LAHIR”);
$v5 = odbc_result($select, “JK”);
$v6 = odbc_result($select, “ALAMAT”);

//Menentukan akhir data dan memberi tanda “;”
if($x==$gi){
$end = “;”;
}else{
$end = “”;
}

//Daftarkan di variabel data
$Data .= “(‘$v1′,’$v2′,’$v3′,’$v4′,’$v5′,’$v6’)”.$end;

// Jika record berjumlah sama dengan limit
if(is_int($x/$limit)){
$comm = “;”;
$Data .= $comm.”rn INSERT INTO biodata VALUES “;
}else{

if($x==$gi){
$comm = “”;
}else{
$comm = “,”;
}

$Data .= $comm.”rn”;
}

$x++;

}

// Buat dump File

$Handle = fopen($File, ‘w’);
fwrite($Handle, $Data);
fclose($Handle);

//EXPORT to MySql
$exec = ‘@echo off
‘.$mysqldir.’ –user=’.$myuser.’ –host=’.$myhost.’ ‘.$mydb.’ < ‘.$dir.’\’.$File;

// Buat .bat file
$eHandle = fopen($eFile, ‘w’);
fwrite($eHandle, $exec);
fclose($eHandle);

system($eFile);

//Hapus File .bat setelah proses.
unlink($dir.’\’.$File);
unlink($dir.’\’.$eFile);

$time_end = microtime(true);
$time = number_format($time_end – $time_start,0, “.”, “”);

// Menampilkan waktu proses
if($time<60){
$time = $time;

$waktu = “Waktu Proses: $time Detik”;
}else{
$min = $time/60;
$minx = number_format($min,0,”.”,””);
$min = $minx * 60;
$sec = $time – $min;

$waktu = “Waktu Proses: $minx Menit, $sec Detik”;
}

$result = “Data Sukses di transfer dalam waktu $waktu”;

}else{
$result = “Gagal Koneksi ke SQL Server”;
}

echo $result;

NO COMMENTS

LEAVE A REPLY