บทนำ
เคยไหม! ช่วงบ่าย 2 ในห้วงเวลาปลายเดือน ในขณะที่คุณกำลังจะเคลิ้มหลับเนื่องจากฤิทธิ์ข้าวเหนียวหมูปิ้งเมื่อมื้อกลางวัน เสียงโทรศัพท์จากหัวหน้า HR ปลุกวิญญาณให้ตื่นจากภวัง
ทาง HR แจ้งว่าไม่สามารถเข้าถึงข้อมูลพนักงานเพื่อที่จะคำนวณเงินเดือนของเดือนนี้ต้องการข้อมูลก่อนเลิกงาน เอาละสิจากพนักงานธรรมดากลายเป็นควมหวังของหมู่บ้านได้ทีนี้มีทางเลือกอะไรบ้าง
- เปิดจาก Application ไม่สามารถเชื่อมต่อ database ได้
- ติดตั้ง Database Management Application พวก pgAdmin , DBeaver, Navicat etc. ปรากฏว่า ขึ้นไม่สามารถเชื่อมต่อฐานข้อมูลได้
- ping ดูว่า server ไหม? ไม่ล่มแล้วไป เลยทดสอบ telnet (โบราณไป..) ssh ไปยัง server พบแต่หน้าจอดำๆ กับพิมพ์ได้อย่างเดียว แล้วไงต่อ การใช้ command line คือทางออก
psql คืออะไร
เป็นโปรแกรมสำหรับโต้ตอบกับฐานข้อมูล PostgreSQL โดยใช้คำสั่ง SQL
การใช้งาน
เข้าใช้งานด้วยคำสั่ง
$psql -U <username> -d <database> -W
เมื่อ
- username: ชื่อผู้ใช้งานใน postgres
- database: ชื่อฐานข้อมูลที่ต้องการเชื่อมต่อ
Tips พารามิเตอร์ที่เกี่ยวกับการเชื่อมต่อ
-h, --host=HOSTNAME: database server host or socket directory (ค่าเริ่มต้น: "local socket")
-d, --dbname=DBNAME: ฐานข้อมูลที่ต้องการเชื่อม(default: "root")
-p, --port=PORT:port ที่ใช้ในการเชื่อมต่อ (ค่าเริ่มต้น: "5432")
-U, --username=USERNAME: ชื่อผู้ใช้งาน (ค่าเริ่มต้น: "root")
-w, --no-password:ไม่ให้ขึ้น prompt ในการป้อนรหัสผ่าน
-W, --password: กำหนดให้ขึ้น prompt ในการป้อนรหัสผ่าน(ควรเกิดขึ้นอัติโนมัติ)
เมื่อเข้าสำเร็จจะแสดง prompt ของ postgres
postgres=#
ที่ postgres prompt ให้พิมพ์คำสั่ง
- \l ดู database ทั้งหมด
- \c <ชื่อฐานข้อมูล> เข้าใช้งานฐานข้อมูลที่ต้องการ
จะเปลี่ยนเป็น prompt เป็นชื่อฐานข้อมูลนั้น โดยเมื่ออยู่ใน prompt ของฐานข้อมูลแล้วเราสามารถใช้คำสั่ง SQL ในการจัดการข้อมูลในฐานข้อมูลนั้นได้ปรกติ
- \dt ดู table ทั้งหมดใน database ปัจจุบัน
- \dt+ ดู size และ description ของ table เพิ่มเติม
- \d <ชื่อตาราง> ดูโครงสร้างของตารางตามที่กำหนด
- \dv ดู view ทั้งหมด
- \df ดู function ทั้งหมด
- \dx ดู extension ที่ติดตั้งทั้งหมด
- \du ดู user ทั้งหมด
- \e ทำการเปิด editor เพื่อแก้ไข command(ต้องมีการกำหนดค่า$EDITOR environment variable)
- \s <ชื่อไฟล์> บันทึก comand ลง file ตามชื่อที่กำหนด
- ! clear สำหรับ clear หน้าจอ
- \h => Help
- \? ดูว่ามี command อะไรให้ใช้งานบ้าง
- \q ออก เลิกใช้งาน …
หมายเหตุ
กรณีที่เราใช้ \c ในการเข้า prompt ของฐานข้อมูลคำสั่งต่างๆ จะแสดงรายการเฉพาะฐานข้อมูลที่เลือก ในกรณีที่ยังไม่กำหนดฐานข้อมูลจะแสดงข้อมูลรายการของทั้ง postgres server
แถมท้าย
เราสามารถดึงข้อมูลพร้อมexport เป็นไฟล์ CSV ให้หัวหน้า HR นำไปใช้งานต่อ(เย้..เลิกงานพอดีและวันนี้ต้องมีคนทำ otและมีตรได้ฉลองเงินเดือนออก)
COPY (SELECT * FROM foo) To '/tmp/test.csv' With CSV DELIMITER ',' HEADER;
บทส่งท้าย
command line เป็นเครื่องมือในการจัดการฐานข้อมูลซึ่งไม่ได้มีเฉพาะใน postgres เท่านั้นฐานข้อมูลอื่นๆ ส่วนมี command line ในการบริหารจัดการฐานข้อมูลได้การที่เราสามารถใช้งานได้จะช่วยเพิ่มทางเลือกในการแก้ปัญหามากขึ้น นอกจากนี้เวลาผู้ใช้เห็นเราใช้ command line แก้ปัญหาจะทำให้ดูหล่อ ประดุจ hacker ในหนังแนวอาชญากรรมทางไซเบอร์ฏ็ไม่ปาน
Top comments (0)