การอัดข้อมูลเยอะ ๆ ใส่ database ในคราวเดียว

ผมเขียนโปรแกรม INSERT ข้อมูลลง PostgreSQL แค่ประมาณ 70000 records ก็กินเวลามาก ๆ เกือบ 2 นาทีมั้ง บางทีก็ต้องใส่เป็นแสนนานกว่านั้นอีก

ท่าแก้ก็อยู่ในคู่มืออยู่แล้ว ใช้ COPY … FROM นั่นเอง

สมมุติว่าผมมี table pos_dict(id int, surface varchar, part_of_speech varchar) แบบนี้นะครับ ผมก็ไปสร้าง CSV รอไว้เลย เช่น

1,"หมา","คำนาม"
2,"กิน","กริยา"
3,"ใน","บุพบท"

ใส่ไว้ที่ /tmp/pos_dict.csv

สมมุติว่า database ชื่อ lexicon ก็สั่งแบบนี้เลย

cat /tmp/pos_dict.csv | psql lexicon -c 'COPY lexicon FROM STDIN WITH (FORMAT CSV)'

ใช้ท่านี้แล้วงานก็เสร็จเร็วขึ้นเยอะเลย

MySQL ก็มีท่าแบบนี้เหมือนกันรู้สึกจะใช้คำสั่ง LOAD DATA มั้ง ตัวอื่น ๆ ก็คงจะมี

ใส่ความเห็น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out / เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out / เปลี่ยนแปลง )

Google+ photo

You are commenting using your Google+ account. Log Out / เปลี่ยนแปลง )

Connecting to %s