Tuesday, October 22, 2019

เทคนิคการใช้งาน wildcard ในคำสั่ง psql

คนที่ใช้งาน PostgreSQL ส่วนใหญ่ จะรู้จักกับ คำสั่ง psql อยู่แล้ว คำสั่งนี้เป็น PostgreSQL Client  ทีมีมากับชุดคำสั่งต่างๆ ของ PostgreSQL  ทำให้เราสามารถเข้าไปจัดการ PostgreSQL database ของเรา โดยใช้  คำสั่งนี้ ที่ Linux command line ได้

วันนี้ผมมีเทคนิคการใช้งาน wildcard กับคำสั่งใน psql มาฝากครับ

Wildcard  คืออะไร 
สำหรับคนที่คุ้นเคยกับคำสั่ง command line  ของ Linux  หรือ Unix ก็จะรู้จักหรือเคยใช้ wildcard เป็นอย่างดี เช่น การเรียกใช้คำสั่ง
ls -l  *abc* 
 จะเป็นการเรียกดูไฟล์ที่มีคำว่า abc อยู่ในชื่อไฟล์ ทำนองนี้ หรือ
ls -l  postgresql?1[0-9]*
จะเป็นการเรียกดูชื่อไฟล์ ที่ขึ้นต้นด้วย postgresql ตามด้วยตัวอักขระอะไรก็ได้ 1 ตัว (?) และตามด้วยตัวเลข 0-9 อีกหนึ่งตัว

Wildcard กับคำสั่ง psql 

เราลองมาดูตัวอย่างคำสั่ง ใน psql ที่เรียกใช้ wildcard  ได้กันนะครับ ตัวอย่างแรกคือคำสั่ง \l  ซึ่งปกติถ้าไม่ระบุ parameter  อะไร จะเป็นการ list ดูชื่อ database ทั้งหมด ที่มีอยู่ในระบบ ออกมา



แต่ถ้าเราเรียกใช้คำสั่ง โดยระบุชื่อ  database  จะเป็นการ list ดู เฉพาะ database ที่เราระบุชื่อ



แต่เราก็สามารถเรียกใช้ตัวอักษร * ซึ่งเป้นตัวอักษรพิเศษตัวหนึ่ง ซึ่งใช้แทน ชุดตัวอักษรใดๆ ตั้งแต่ 0 ตัวเป็นต้นไป ได้ ตัวอย่างเช่น



จากตัวอย่างนี้ เป็นการเรียกใช้คำสั่ง \l template*  ผลลัพท์ที่ได้เป้นการเรียกดู database ที่มีชื่อขึ้นต้นด้วยคำว่า template  และตามด้วยตัวอักขระอะไรก็ได้ ตั้งแต่ 0 ตัวขึ้นไปครับ เราจะได้ database สองตัวคือ  template0 และ template1 

ลองดูอีกตัวอย่าง เช่น list ดู database ซึ่งในชื่อ มีตัวอักษร underscore (_)  อยู่ 


จากตัวอย่างนี้ เราจะเห็น database ชื่อ test_pentaho อยู่

ที่จริงการใช้ wildcard  นี้สามารถใช้กับคำสั่งอื่นๆ ใน psql ได้นะครับ คำสั่งที่ผมใช้บ่อยๆ อีกคำสั่งหนึ่งคือ \dt  ซึ่งปกติ เป็นการ list รายชื่อ table ที่มีอยู่ใน database ที่เรา connect อยุ่ออกมา 

จากตัวอย่าง ผมใช้คำสั่ง psql connect ไปที่ database ชื่อ test_pentaho แล้วลองใช้คำสั่ง \dt  ทำการ list table  ที่มีอยู่ใน database นี้ จะเห็นมีสอง table  


ลองใช้ \dt *1  เพื่อ list ชื่อ table ที่ลงท้ายด้วย 1



ลองใช้  \dt *[0-9] เป็นการ list ชื่อ table ที่ลงท้ายด้วยตัวเลข  0-9











ที่จริงเทคนิคนี้ สามารถใช้กับคำสั่งอื่นๆ ของ psql ได้อีกนะครับ ลองไปใช้กันดูนะครับ

ศิวัฒน์ ศิวะบวร