2015-04-12 4 views
5

में \ pset मैं जब जब एक set बनाम \set बनाम \pset उपयोग करने के लिए के बीच psql के साथ काम थोड़ा भ्रमित कुछ समय मिलता है। मुझे लगता है कि:अंतर, सेट और psql

  • set डीबी से मेरे कनेक्शन पर सत्र चर के लिए है। उदाहरण के लिए SET ROLE dba;
  • \set इस psql सत्र के लिए स्थानीय चर के लिए है। उदाहरण के लिए \set time 'select current_timestamp'
  • \pset इस psql सत्र के लिए psql सेटिंग्स के लिए है। उदाहरण के लिए '\pset border 2'

लेकिन, मैंने कभी नहीं पाया जो मैंने सोचा था कि प्रत्येक का एक अच्छा स्पष्टीकरण था। क्या मेरी धारणाएं सही से ऊपर हैं?

मैं PostgreSQL 9.4

+0

के उत्पादन को प्रभावित 'set' किसी SQL आदेश है और किसी भी एसक्यूएल ग्राहक से इस्तेमाल किया जा सकता। '\ set' और' \ pset' का उपयोग केवल 'psql' –

+2

के साथ किया जा सकता है यह दुर्भाग्यपूर्ण है कि '\ set' को' \ varset' या कुछ नाम नहीं दिया गया था। –

उत्तर

8

मूल रूप से सही उपयोग कर रहा हूँ। महत्वपूर्ण अंतर यह है कि SET एक SQL कमांड है जबकि अन्य दो psql मेटा-कमांड हैं - prefixed \ द्वारा इंगित किया गया है।

  • SET रन-टाइम पैरामीटर बदलने के लिए एक SQL कमांड है। इसे सर्वर पर निष्पादित किया जाता है और इसमें psql प्रति से कोई लेना देना नहीं है।

  • \set एक psql मेटा-आदेश है और, per documentation:

    मूल्य के लिए psql चर नाम सेट करता है [...]

    नोट: यह आदेश एसक्यूएल आदेश SET से संबंधित नहीं है।

  • \pset एक और psql मेटा-आदेश है। Per documentation:

    यह आदेश सेट विकल्प क्वेरी परिणाम टेबल

संबंधित मुद्दे