เนื่องด้วยที่กรมเนี่ยใช้ 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