DEV Community

1

คู่มือเอาตัวรอด :การใช้งาน 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 ในหนังแนวอาชญากรรมทางไซเบอร์ฏ็ไม่ปาน

AWS Security LIVE!

Tune in for AWS Security LIVE!

Join AWS Security LIVE! for expert insights and actionable tips to protect your organization and keep security teams prepared.

Learn More

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay