DEV Community

คู่มือเอาตัวรอด :การใช้งาน PostgreSQL ผ่าน command line

บทนำ
เคยไหม! ช่วงบ่าย 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
Enter fullscreen mode Exit fullscreen mode

เมื่อ

  • 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=# 
Enter fullscreen mode Exit fullscreen mode

ที่ postgres prompt ให้พิมพ์คำสั่ง

  • \l ดู database ทั้งหมด

Image description

  • \c <ชื่อฐานข้อมูล> เข้าใช้งานฐานข้อมูลที่ต้องการ

Image description
จะเปลี่ยนเป็น prompt เป็นชื่อฐานข้อมูลนั้น โดยเมื่ออยู่ใน prompt ของฐานข้อมูลแล้วเราสามารถใช้คำสั่ง SQL ในการจัดการข้อมูลในฐานข้อมูลนั้นได้ปรกติ

  • \dt ดู table ทั้งหมดใน database ปัจจุบัน

Image description

  • \dt+ ดู size และ description ของ table เพิ่มเติม

Image description

  • \d <ชื่อตาราง> ดูโครงสร้างของตารางตามที่กำหนด

Image description

  • \dv ดู view ทั้งหมด
  • \df ดู function ทั้งหมด

Image description

  • \dx ดู extension ที่ติดตั้งทั้งหมด

Image description

  • \du ดู user ทั้งหมด

Image description

  • \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;
Enter fullscreen mode Exit fullscreen mode

บทส่งท้าย
command line เป็นเครื่องมือในการจัดการฐานข้อมูลซึ่งไม่ได้มีเฉพาะใน postgres เท่านั้นฐานข้อมูลอื่นๆ ส่วนมี command line ในการบริหารจัดการฐานข้อมูลได้การที่เราสามารถใช้งานได้จะช่วยเพิ่มทางเลือกในการแก้ปัญหามากขึ้น นอกจากนี้เวลาผู้ใช้เห็นเราใช้ command line แก้ปัญหาจะทำให้ดูหล่อ ประดุจ hacker ในหนังแนวอาชญากรรมทางไซเบอร์ฏ็ไม่ปาน

Top comments (0)