แบ่งไฟล์ข้อมูลขนาดใหญ่ออกเป็นไฟล์เล็กๆ ด้วย PHP
เรื่องของเรื่องคือผมมีฐานข้อมูลขนาดใหญ่ที่ต้องอัปโหลด ขนาดร้อยกว่า Meg ไม่สามารถอัปโหลดทีเดียวได้ ก็เลยคิดจะแบ่งฐานข้อมูลออกเป็นไฟล์เล็กๆ ให้อัปโหลดง่ายขึ้น และก็ยัง query เข้าฐานข้อมูลได้ง่ายขึ้นด้วยครับ
ดูการทำงานที่โค้ดกันเลย
ผลลัพท์จะได้เป็นไฟล์ 0.sql, 1.sql....ไปเรื่อยๆ จนกว่าจะหมด ที่ drive C ครับ ก็ run code นี้ ควรตรวจสอบไดร์ฟ C ให้เรียบร้อยก่อนครับ
ดูการทำงานที่โค้ดกันเลย
<?
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 ให้เรียบร้อยก่อนครับ