เนื่องด้วยที่กรมเนี่ยใช้ MS-SQL 2000 ซึ่งโบราณ และไม่โอเคในการทำงาน ผมจึงต้องการย้ายไปที่ MySQL แล้วจะทำยังไง ?
- ติดตั้ง MySQL ODBC Connector
- ติดตั้ง MySQL จะใช้ xampp ก็ได้
- create database ใน MySQL รอไว้
- ไปใน Control Panel ไปสร้าง ODBC ของ MySQL รอไว้
- ไปที่ MS-SQL ใช้ Enterprise Manager
- คลิกขวาที่ตัว database เลือก task -> export data
- เลือก odbc ต้นทาง และปลายทาง กดให้มันทำงาน ก็เรียบร้อย
ปัญหาสำหรับภาษาไทย tis620 vs utf8 แม่งอ่านไม่ออก
การแก้ไขให้ดำเนินการตามนี้
- ใน MySQL ให้ dump ออกมาเป็น .sql ผมเลือกใช้ HeidiSQL เพราะมันฟรี
- เอา PHP ตามนี้ไปใช้
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
<?php
# CONVERT WRONG ODBC TIS620 to UTF8 correctly
ini_set('max_execution_time', 300);
# INPUT FILE
$fp = fopen("ecar_data.sql","r");
# OUTPUT FILE
$op = fopen("ecar_data_utf8.sql","wb");
$n = 0;
while ($line = fgets($fp)) {
$a = mb_str_split ($line);
$new = "";
foreach ($a as $c) {
$len = strlen($c);
if (strlen($c) == 2) { ### multibyte
$d1 = ord($c[0]) << 8;
$d2 = ord($c[1]);
$d = $d1+$d2;
if (dechex(ord($c[0])) == 'c2') {
$d = $d - 0xb4a0;
} elseif (dechex(ord($c[0])) == 'd') {
$d = 0x0d;
} else {
$d = $d - 0xb560;
}
$hex = str_pad(dechex($d),4,'0',STR_PAD_LEFT);
$c = json_decode('"\u'.$hex.'"');
}
$new .= $c;
}
fputs($op,$new."\n");
}
fclose($op);
fclose($fp);
function mb_str_split( $string ) {
return preg_split('/(?<!^)(?!$)/u', $string );
}
?>
</body>
</html>
การ RESEARCH
