แบ่งไฟล์ข้อมูลขนาดใหญ่ออกเป็นไฟล์เล็กๆ ด้วย PHP

เรื่องของเรื่องคือผมมีฐานข้อมูลขนาดใหญ่ที่ต้องอัปโหลด ขนาดร้อยกว่า Meg ไม่สามารถอัปโหลดทีเดียวได้ ก็เลยคิดจะแบ่งฐานข้อมูลออกเป็นไฟล์เล็กๆ ให้อัปโหลดง่ายขึ้น และก็ยัง query เข้าฐานข้อมูลได้ง่ายขึ้นด้วยครับ

ดูการทำงานที่โค้ดกันเลย

<?
set_time_limit(0);
$arr = file("C:/articles/articles.sql"); //ไฟล์ข้อมูลหลักที่ต้องการแยก

$records = count($arr);
$split = 1000; //แบ่งออกไฟล์ละ 1000 บรรทัด
$total = (int)($records / $split);
if ($total * $split < $records) $total++;

$n = 0; //ชื่อไฟล์เริ่มต้น C:/0.sql....C:/9.sql
for ($i = 0; $i < $total; $i++) {
  $q = 0;
  $f = fopen("C:/$i.sql", "wb");
  while ($n < $records & $q < $split) {
   fputs($f, $arr[$n]);
   $n++;
   $q++;
  }
  fclose($f);
}
?>

ผลลัพท์จะได้เป็นไฟล์ 0.sql, 1.sql....ไปเรื่อยๆ จนกว่าจะหมด ที่ drive C ครับ ก็ run code นี้ ควรตรวจสอบไดร์ฟ C ให้เรียบร้อยก่อนครับ
ผู้เขียน goragod โพสต์เมื่อ 31 มี.ค. 2551 เปิดดู 6,291 ป้ายกำกับ PHP
^