
Last Updated (Sunday, 09 August 2009 13:35) Tuesday, 13 January 2009 12:05
ทำไมต้องเป็น CSV ?
001,"Pornchai K."
002,Polla
003,Aum
Comma-separated values (CSV) เป็น file format มาตรฐาน สำหรับนำข้อมูล import เข้า database ได้ทุกยี่ห้อ ที่สนับสนุน format นี้ เช่น Oracle , MS SQL Server , MySQL, Informix,DB2, PostgreSQL, MS Access โดยข้อตกลง RFC4180 ได้อธิบาย format โดยสรุปไว้ดังนี้
" CSV เป็น delimited data format โดยมีเครื่องหมาย comma ( , ) เป็นตัวแบ่ง fields/columns และ ใช้การ ขึ้นบรรทัดใหม่ เป็นการแบ่ง record/rows โดยสามารถใช้ double quote ( " " ) เป็น option เพิ่ม สำหรับข้อมูลใน field ที่เป็นสัญลักษณ์พิเศษ หรือ เป็นข้อมูลที่ว่างๆ (null) ป้องกันความสับสนในการแบ่ง columns เวลา import ได้ "
Database ยี่ห้ออื่น เช่น MS SQL Server , MySQL ได้แถม Tool ที่สามารถ export ข้อมูลออกมาเป็น CSV ติดพร้อมกันกับ Software Database เลย แต่สำหรับ Oracle นั้นไม่มีติดมาให้ ซึ่งผมก็ไม่เข้าใจเหมือนกันว่า เพราะอะไร ทั้งๆที่มันมีประโยชน์มากแท้ๆ จึงต้องลำบากเราไปหา Tool มาเพิ่ม หรือไม่ก็ต้องใช้ Third Party Tools มาช่วย
แต่ ถ้าเราไม่อยาก ไปหา Tool มาเพิ่ม เราก็สามารถนำข้อมูล export ออกมาเป็นไฟล์ CSV ได้ โดยใช้เทคนิคการ SELECT และ ใช้การจัด environment ของ SQL*PLUS
อธิบาย
SET HEADING OFF = ไม่แสดงชื่อ column ในการแสดงผล SET FEEDBACK OFF = ไม่ต้องแสดงว่า กี่ row selected SET LINESIZE 1000 = ให้การแสดงผล 1 บรรทัด ยาวได้ 1,000 ตัวอักษร SPOOL = ให้นำบรรทัดต่อจากนี้ไป ทั้ง command และ ผลลัพธ์ dump ออกมาเป็นไฟล์|| = Concatination เชื่อม column ให้ติดกัน ',' = ให้เขียน comma คั่น SPOOL OFF = สิ้นสุดการ dump ลงไฟล์
แล้วเราก็จะได้ csv file ออกมา ดังรูป (ถ้ามี SQL Command ติดมาที่บรรทัดแรก กับ บรรทัดสุดท้ายของไฟล์ ให้ตัดออก เหลือเฉพาะส่วน data )


