หน้าเว็บ

วันพุธที่ 2 พฤศจิกายน พ.ศ. 2554

แก้ปัญหา add ข้อมูลชนิด Date ใน Oracle Database 11g ผ่าน Microsoft Excel

        ผมเชื่อว่าหลายๆท่านที่ใช้ Oracle Database Server คงเคยเจอปัญหานี้
คือ  เราต้องการ add ข้อมูล ผ่าน Excel   โดยหนึ่งใน  field tpye เรามี data type เป็น date

       พอทำการ add  ข้อมูลเข้าไปแล้ว  ตรง field ข้อมูลที่เป็น  date ไม่เป็นไปตามที่เรากำหนดไว้  หรือบางทีก็มี Error  คือ add ไม่ได้เกิดขึ้น  ดังตัวอย่างต่อไปนี้

หรือ

     
   ทั้งๆที่ใน Excel เรา  date formt เราเป็น DD-Mon-YYYY  แล้วไหงมันมาเป็นแบบนี้ล่ะ 

        เห็นความแตกต่างมั้ยครับ

นั่นก็เป็นเพราะว่า  มี 3 อย่างนี้ที่ไม่ตรงกัน  คือ



  1. date format ของเครื่อง 
  2. date format ของ database server (oracle database 11g R2) 
  3. date format ของ microsoft excel ที่เรากำหนด

มาแก้ปัญหานั้นกันครับ

  1. ดูว่า date  format ใน Excel เราเป็นยังไง  เราต้องการเก็บข้อมูลลงใน database ลักษณะไหนในที่นี้  date format ใน Excel ของผมเป็น  DD-Mon-YYYY  เช่น 1-Jan-1990  ดังรูปข้างบน
  2. ต่อมา  ทำการเซต date format ที่เครื่องเราให้ตรงกับใน Excel  
  3. จากนั้นเซต date format ใน database server ให้ตรงกันอีกที
ก็เป็นอันว่าใช้งานได้แล้ว  มาดูวิธีการกันครับ

เซต date format ที่เครื่องเราให้ตรงกับใน Excel
ไปที่ Control panel --> Region and Language


ที่หน้า Formats

      ตรง Format :  ให้เป็น English (United States)
      และแก้ตรง Short Date ให้ตรงกับใน Excel
ให้เข้าใจว่า format DD-Mon-YYYY  กับ  dd-MMM-yyyy   คือ format เดียวกัน


ที่หน้า Location

        ตรง  Current location : ให้เป็น United States
จากนั้น OK ไป 
 



จากนั้นเซต date format ใน database server ให้ตรงกัน 

         เมื่อเราเข้าไปที่ Oracle SQL Developer แล้ว  
ให้เราไปที่   Tools-->Preferrences-->database-->NLS Parameters
จากนั้น เซตค่าดังนี้  
  • Date Format : ให้เป็น DD-Mon-YYYY  แต่ในที่นี้ผม เซตเป็น DD-Mon-YY เพราะว่าต้องการเก็บลง database ให้มีปีแค่ 2 หลัก(YY)  แต่ว่าเราจะเซตเป็น 4 หลักก็ได้(YYYY)  ไม่มีปัญหาครับ  เพราะมันคือ format เดียวกัน แค่ต่างกันตรงเลขจำนวนปี
  • ตรง TimeStamp ก็ให้กำหนดให้ตรงกันด้วย  แล้วก็ OK ดังรูป



        ลอง add ข้อมูลดูครับ

สมมติว่าผมต้องการ add ข้อมูลลงใน table student


คลิ๊กขวาที่ table ที่เราต้องการ add ข้อมูล
แล้วเลือก Import data


จากนั้นให้เราหาไฟล์ที่ต้องการ add ข้อมูลลงไป  ซึ่งสามารถ add ได้ 2 ประเภท คือ
  • Excel ต้องเป็น 97-2003 เท่านั้น  เพราะว่าเป็น .xls (ถ้าเป็น version 2007 จะเป็น .xlsx add ไม่ได้)
  • หรือ ไฟล์ .CSV (Comma Separated Value)ที่ต้องการ add ข้อมูลลงไป




    ข้อมูลใน Excel ก็จะถูกโยนเข้ามา
    สังเกตว่าผมได้ติ๊ก Head? ด้วย  ก็คือการเอาแถวแรกใน Excel  มาทำเป็น Head


    แต่ถ้าใน Excel เราไม่ได้เขียนไว้  ก็ไม่เป็นไรครับ  จากนั้นก็ ใช้เทคโนโลยี next ที่เราได้เรียนกันมา  ฮ่าๆๆๆ


    คลิ๊กที่ลูกศร >> เพื่อเลือก field ทั้งหมด
    แล้วก็ next อีกรอบ




    จากนั้นก็กำหนด field ข้อมูลให้ตรงกันกับใน table student ครับ




    ตรงนี้สำคัญมาก
    ในส่วนของ field ที่เป็น date ให้กำหนด Date Format ให้มันด้วย
    โดยจะต้องตรงกันกับในส่วนของ Date Format ใน NLS Parameters ตอนที่กำหนดให้ database server
    ต้องเป็น format เดียวกัน เท่านั้น



    เมื่อเรากำหนด field ทุก field ให้ตรงกันแล้ว ก็เทคโนโลยี next ไปอีกครับ

    กด verify เพื่อดูผลลัพธ์  สังเกตว่าจะไม่มี error เกิดขึ้น



    refresh  เพื่อดูผลการ add ข้อมูล


    สรุป ก็เป็นอันใช้งานได้ครับ


    แต่ถ้าใคร add ไม่ได้ ผมแนะนำให้ลอง  save ไฟล์  Excel (.xls)  ให้เป็น .csv ดูน่ะครับ



    หวังว่าคงทำให้หลายๆท่าน  ทำงานได้สะดวกสบายยิ่งขึ้น  ^^

    ไม่มีความคิดเห็น:

    แสดงความคิดเห็น