วันอังคารที่ 20 กุมภาพันธ์ พ.ศ. 2561

ทดลองใส่ข้อมูลจำนวนมากลง PGSQL

    ในสัปดาห์ที่แล้วอ. SPN ให้ลองไปใส่ข้อมูลของเกรดของนศ.ในจำนวนที่มากเป็น 2 เท่าของแรมที่มี ซึ่งตัวผมใช้คอมพิวเตอร์ที่มีแรมทั้งหมด 8 GB ทำให้ต้องใส่ข้อมูลเรื่อยๆจนมีขนาดไฟล์ของ db ที่มากกว่า 16 GB

    โดยวิธีที่ใช้ในการใส่ข้อมูลลงไปในตาราง (Insert) ตัวผมเองนั้นได้ลองใช้วิธีการใช้ Loop While ใน SQL โดย

DO $$
DECLARE
    counter integer := 0;
BEGIN
  WHILE counter <= 160000000 LOOP
      counter := counter + 1 ;
      INSERT INTO public.transcript(
          stu_id, sub_id, year, semester, gpa, comment)
  VALUES ('5801012610067', '010123101',counter, 1, 'A', '');
  END LOOP ;
END $$;

ต้องขอบคุณเว็บ http://www.postgresqltutorial.com สำหรับข้อมูลการใช้งานคำสั่ง

    โดยในตอนแรกได้ทดลองวนลูปใส่ข้อมูล 10 ล้านตัว ซึ่งจะทำให้ขนาดของ Database อยู่ที่ราวๆ 1.7 GB เลยได้ทดลองใส่ข้อมูลจำนวน 160 ล้านตัว ผลที่ได้เป็นดังนี้


ใช้เวลาไปทั้งหมด 2 ชั่วโมง 49 นาที 26 วินาที

ขนาดไฟล์ Database อยู่ที่ราวๆ 27 GB
    
    แต่ทว่าในการลอง Select ข้อมูลออกมาเพื่อชมผลลัพธ์นั้น กับเจอกับสิ่งนี้เแทน


    ซึ่งหลังจากพยายามอยู่ทั้ง 3 รอบ โดยหลังจากพบปัญหารอบแรกก็ได้เข้าโปรแกรม pgAdmin แล้วก็รันสคริปต์ แล้วปล่อยไว้ไม่ได้ทำอะไรกับมันอีกเลย แต่ผลที่ได้มาก็เป็นเช่นเดิม โดยในตอนนี้ก็ได้ปล่อยให้มันรันต่อไป ถ้ามีผลยังไงจะมาชี้แจงในบทความหน้า ขอบคุณครับ


วันอังคารที่ 6 กุมภาพันธ์ พ.ศ. 2561

PostgreSQL pt.4

    ในบทความนี้จะขอกล่าวถึงเรื่องของการ สร้าง table และการตั้งค่าต่างๆ (PK,FK) และ การ import file csv ลงใน database โดยใช้ pgAdmin 4 โดยจะเป็นส่วนหนึ่งของการทำงานที่ได้รับมอบหมายในสัปดาห์ที่ 4 ที่อาจารย์ SPN ให้ไปลองใช้ DBMS ตัวอื่น ซึ่งตัวผมได้รับมอบหมายให้ศึกษา PostgreSQL

    การออกแบบ Table ของ Group 5

     จากการหารือและคุยกันเลยได้ข้อสรุปดังนี้

1. จะมีการทำ tables 3 ตาราง

2. tables ทั้ง 3 มีดังนี้

     2.1 student มี attribute ดังนี้
        1) stu_id (Primary Key)  เป็น PK และเป็นรหัสประจำตัวนักศึกษา
        2) f_name  เป็นชื่อจริง
        3) l_name  เป็นชื่อนามสกุล
        4) email   เป็นอีเมล์
   
    2.2 subject มี attribute ดังนี้
        1) sub_id (Primary Key) เป็น PK และเป็นรหัสวิชา
        2) sub_name  เป็นชื่อวิชา
        3) credits  เป็นหน่วย

    2.3 transcript มี attribute ดังนี้
        1) stu_id (Primary Key)  เป็น PK และเป็นรหัสนศ. โดยจะมี Foreign key เป็น stu_id ของ table student
        2) sub_id (Primary Key)  เป็น PK และเป็นรหัสวิชา โดยจะมี Foreign key เป็น sub_id ของ table subject
        3) year (Primary Key) เป็น PK และเป็นปีที่ลง
        4) semester (Primary Key)  เป็น PK และเป็นเทอมที่ลง
        5) gpa  เป็นเกรดเฉลี่ยนเป็นตัวอักษร
        6) comment  เป็นข้อความระบุรายละเอียด(ไม่จำเป็น)

    โปรแกรม pgAdmin 4

    โปรแกรม pgAdmin 4 เป็นโปรแกรมที่ติดมาจากการติดตั้ง PostgreSQL โดยจะเป็นตัวจัดการ Database แบบ GUI ทำให้สามารถทำงานได้อย่างสะดวกสบายมากขึ้น


 การสร้าง table ใน pgAdmin 4

    เนื่องจากเป็นตัวจัดการ Database แบบ GUI ทำให้มีความสะดวกสบายในการทำงานที่ค่อนข้างสูง โดยเราสามารถที่จะสร้าง table ได้โดยการคลิกขวาที่ หมวด table แล้วเลือก Create ได้ทันที



    โดยเมื่อกด Create -> Table แล้วก็จะสามารถใส่รายละเอียดต่างๆดังนี้

    ในแถบ Columns จะเป็นการกำหนดค่า attributes ต่างๆ ว่าชื่ออะไร เป็นข้อมูลประเภทไหน สามารถกำหนดความยาวของข้อมูลได้ ตั้งค่า Not NULL? ได้ และตั้งค่าให้เป็น Primary key ของ table นี้ด้วยหรือเปล่า

   โดยจะทำเหมือนกันทั้ง 3 tables แต่จะมีความพิเศษตรง table สุดท้ายคือ จะมีการกำหนด Foreign key ที่ชี้ไปยัง table student และ subject ที่เป็น table อ้างอิง โดยวิธีการตั้งค่าส่วนนี้มีดังนี้

    ในแถบ Constraints จะมีแถบย่อยๆอีกมากมาย โดยในแถบแรกจะเป็นแถบของ Primary key ซึ่งจะบอกรายละเอียดของ PK ที่มีอยู่ใน table นี้และในแถบ Foreign Key จะเป็นส่วนที่เราต้องการให้คลิกที่แถบนั้น

  

     ในแถบนี้เมื่อกดเครื่องหมายบวกทางขวาจะเป็นการเพิ่ม Foreign key โดยเมื่อกดไปแล้วจะสามารถตั้งค่าได้ดังนี้ 

    โดยในแถบ Columns จะมีช่องว่างให้เติม 3 ช่องก็คือ

Local col. =>  ที่อยู่ใน table ปัจจุบัน References => table ที่อ้างอิง Referencing => column อ้างอิงของ table ที่เลือก

 การ import csv ใน pgAdmin 4

ในการ import นั้นเราจะมีไฟล์ csv ของทั้ง 3 ตารางเรียบร้อยแล้ว

หลังจากนั้นในหมวดหมู่ table ให้เราคลิกขวาแล้วเลือก import/export 


    หลังจากนั้นจะมีช่องให้ browser file csv แล้วเลือก Encoding ซึ่งที่นี้ใช้ตัว UTF8 และเลือกมี Header

    โดยเมื่อกด apply เสร็จแล้วก็สามารถดูข้อมูลได้โดยการใช้ SQL Script 

- table => student


               
- table => subject


- table => transcript





วันจันทร์ที่ 5 กุมภาพันธ์ พ.ศ. 2561

PostgreSQL pt.3

การสร้าง table และ insert ข้อมูล

    ทดลองการสร้าง table โดยการใส่คำสั่งใน shell จะได้ผลดังนี้







    และเมื่อเราใช้โปรแกรม pgAdmin 4 เพื่อดูข้อมูลของ database จะได้ผลดังนี้











    ส่วนการ insert ข้อมูลนั้นสามารถทำได้โดยใช้ sql script ใน pgAdmin ได้


    โดยเมื่อ insert เข้าไปแล้วสามารถลองดูข้อมูลได้ด้วยคำสั่ง select 







PostgreSQL pt.2

การ create และ drop database

    ในการสร้างหรือลบ database สามารถทำได้ทั้งผ่าน gui และผ่าน SQL shell

ผ่าน shell















ผ่าน gui














    หากต้องการที่จะ drop จะสามารถทำได้ผ่านทาง shell และ gui เช่นกัน










PostgreSQL pt.1

    ในสัปดาห์ที่ 4 อ.SPN ได้บอกให้ไปทดลองใช้ตัว DBMS ตัวอื่นๆ โดยในกลุ่มของผมก็ได้แบ่งงานกันทำ และผมได้รับมอบหมายให้ทำในส่วนของ PostgreSQL

    เบื้องต้นนั้นผมได้ลองโหลดตัว PostgreSQL มาและติดตั้ง












    จากนั้นก็ลองไปหา Tutorial บน Youtube ซึ่งก็เจอ Channel หนึ่งที่ชื่อว่า Programming Guru มีคลิปสอนการใช้งานอยู่ ก็ได้ลองทำตามและศึกษา