ใครๆก็ต้องเคยทำงานกับข้อมูลจำนวนมากๆ ซึ่งทุกคนก็รู้ว่า หากทำงานกับข้อมูลจำนวนมากๆ นั้น สิ่งที่เราจะต้องเจอก็คือเรื่องความช้า ช้า และ ช้า ซึ่งวันนี้เราจะมาลองดูวิธีที่จะทำให้การทำงานกับข้อมูลจำนวนมากๆ นั้นเร็วขึ้นกัน

เริ่มต้นด้วยการทำงานแบบ Insert คือ หากเราต้องการที่จะเพิ่มข้อมูลปริมาณมากๆ เช่น 1 ล้าน record หากเราค่อยๆใช้คำสั่ง Insert Into ไปเรื่อยๆ ก็ย่อมที่จะต้องใช้เวลาที่นานมากแน่ๆ

วิธีที่เราจะใช้ Insert ข้อมูลให้รวดเร็วก็คือ การใช้งาน Bulk Insert ซึ่งใน SQL Server หลายๆ ค่ายก็จะมีวิธีการที่แตกต่างกันไป ในที่นี้เราจะทดลองใช้ผ่าน MSSQL

วิธีการก็คือให้เราเตรียมไฟล์ที่เป็น CSV ไว้สำหรับงานนี้
1,’sed euismod ut laoreet’,2009-04-04 19:58:49:000,1256010.38,’sit aliquam ut ipsum aliquam ut nonummy ut magna euismod’,0,2019-10-27 00:40:28:820,35001,,,,,25523,1,2019-10-27 00:40:28:955

อันนี้เป็นตัวอย่างที่เราเตรียมไว้ โดยเราก็จะแบ่งหลายๆ คอลัมน์ ด้วย คอมม่า

พอรวมทั้งไฟล์ ก็จะมีหน้าตาประมาณนี้ (ไฟล์ขนาด 200MB สำหรับข้อมูลทดสอบของเรา)

สำหรับคำสั่ง SQL เพื่อจะทำ bulk insert นั้น เราก็สามารถใช้คำสั่งง่ายๆได้

BULK INSERT T_SAMPLE_TYPE –อันนี้เราก็ใส่เป็นชื่อ Table
FROM ‘c:\bulks.csv’ –ส่วนอันนี้ก็แก้เป็นไฟล์ CSV ที่เราได้เตรียมไว้
WITH
(
FIELDTERMINATOR = ‘,’,
ROWTERMINATOR = ‘\n’
);

จะเห็นว่าเราสามารถ Insert ถึง 1ล้าน Record ได้ ภายในเวลาไม่ถึง 1 นาที ซึ่งถ้าเทียบกับวิธีที่เราจะต้อง Insert Into ทีละ record แล้ว เราอาจจะต้องรอหลายๆ นาทีกันเลยทีเดียว

#รับเขียนโปรแกรม .NET
#รับทำ Web App ทางธุรกิจ
#ที่ปรึกษาด้าน IT