ขอคำแนะนำครับ เรื่องการ วนลูบ เพื่อบันทึกข้อมูลจำนวนมาก ในครั้งเดียว
ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา ขอคำแนะนำครับ เรื่องการ วนลูบ เพื่อบันทึกข้อมูลจำนวนมาก ในครั้งเดียว
ผมเขียนโปรแกรม ด้วย php ทำการอ่านไฟล์ ที่อัพโหลดขึ้นไป ผ่านเว็บ ครับ
ไฟล์ นั้นเป็นไฟล์ .txt ขนาดไม่ใหญ่ ไม่เกิน 1mb
โดยที่ ในไฟล์ .txt ที่ว่าจะเป็นข้อมูลการเปิดเมินครับ
ซึ่งได้มาจาก ใบประเมินที่ใช้เครื่องตรวจ
มันจะออกมาเป็นตัวเลข 1ใบ ต่อ 1แถว
ในกณีที่ว่า การตรวจ1ครั้ง จะมีจำนวนมาก หลายพันใบ ซึ่ง หมายถึงว่า ในนั้นจะมีข้อมูลหลายพันแถว
ผมได้เขียนโปรแกรม เพื่อ อ่านข้อมูลทีละแถว แล้ว บันทึกลง database (MySQL) จากนั้นถึงเอาข้อมูลมา ออก report เป็น PDF อีกที
ซึ่งในส่วนนี้ ทำได้หมดแล้วครับ เสร็จเรียบร้อยตรงตามต้องการ
แต่มาพบปัญหาตรงที่ ข้อมูลที่ นำมาใช้ ทดสอบ ระบบ ผมลองแค่ 50แถว
โปรแกรม มันสามารถ อ่านและบันทึกลง database ได้ปกติครับ
แต่เมื่อลองข้อมูลที่มากขึ้น ผมลองมากขึ้นจากเดิม 1เท่า คือ 100แถว
ผลปรากฎว่า error ไปเลยครับ
จะมีวิธีแก้ปัญหาอย่างไรได้บ้างครับ
ถ้าต้องการทำผ่านเว็บด้วย php เพราะส่วนตัวนั้นถนัด php และตอนนี้สามารถออก report ได้ตามต้องการแล้วด้วย
ซึ่งไม่สามารถที่จะแก้วิธีการนำเข้าข้อมูลได้ครับ (จำนวนใบประเมินที่เค้าส่งมาตรวจ)
คือเค้าจะตรวจทีเดียว ทีละหลายๆพันใบ แล้วจะได้ ผลสรุปมาเป็นไฟล์ 1 ไฟล์ เท่านั้น
ตอนนี้ผมออกแบบ database ที่เก็บผลประเมินแบบนี้ครับ
มี tb_data กับ tb_data_detail
ซึ่งใน tb_data จะเก็บพวกรายละเอียดหลักๆของใบประเมิน
ส่วน tb_data_detail จะเก็บคะแนนจากใบประเมินครับ โดยที่ 1ใบประเมิน = 20ข้อ
ดังนั้นจะหมายถึง tb_data 1 record จะมีข้อมูล ใน tb_data_detail อีก 20 record ด้วย
จากตัวอย่างข้างบน ที่ผมทดสอบ 50แถวใน ไฟล์ .txt มันจะได้
tb_data 50 record กับ tb_data_detail 1000 record
การ insert ข้อมูล ผม ให้มัน loop 2ชั้น คือ
while(){
Insert tb_data
while(){ //loop 20 รอบ
Insert tb_data_detail
}
}
ผมควรเปลี่ยนการออกแบบฐานข้อมูล โดยที่ข้อมูลใน tb_data_detail นำไปยัด อยู่ใน tb_data ดีกว่าไหมครับ สำหรับข้อมูลจำนวนเยอะมากขนาดนี้ แบบว่า ไปสร้าง field เพิ่มใน tb_data อีก 20 field เพื่อเก็บ ผลประเมิน จำนวน 20ข้อ อะครับ
คำแนะนำ และการใช้งาน
สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก
- ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ