PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

एक psql स्क्रिप्ट में चर का उपयोग कैसे करें

सबसे पहले, आप + . के साथ दो स्ट्रिंग्स को जोड़ने का प्रयास कर रहे हैं ऑपरेटर, लेकिन संयोजन के लिए SQL ऑपरेटर || . है , उस जानकारी के साथ, आप सोच सकते हैं कि अपेक्षित परिणाम होगा (काम नहीं करेगा ):

\set path '''c:\\server\\data\\'''
COPY paymentMethods (name,regexString) FROM :path || 'paymentMethods.csv' WITH (FORMAT csv, HEADER true);
COPY priceLevels (name) FROM :path || 'priceLevels.csv' WITH (FORMAT csv, HEADER false);

परंतु! COPY कमांड पथ के लिए एक शाब्दिक स्ट्रिंग की अपेक्षा करता है, अभिव्यक्ति नहीं, इसलिए आपको वास्तव में पथ देना चाहिए। ध्यान दें कि यह SELECT . जैसे कमांड के लिए काम करेगा , INSERT , UPDATE , आदि.

उस जानकारी के साथ, आप केवल psql . का उपयोग कर सकते हैं चर, जैसा कि पावेल ने बताया, और स्ट्रिंग्स को psql . में संयोजित करें चर है। एक अच्छा समाधान psql . का उपयोग करना है का :'var' सिंटैक्स, जो वैरिएबल को SQL एक्सप्रेशन में एक स्ट्रिंग के रूप में सम्मिलित करता है:

\set path 'c:\\server\\data\\'
\set paymentMethodsPath :path 'paymentMethods.csv'
\set priceLevelsPath :path 'priceLevels.csv'
COPY paymentMethods (name,regexString) FROM :'paymentMethodsPath' WITH (FORMAT csv, HEADER true);
COPY priceLevels (name) FROM :'priceLevels' WITH (FORMAT csv, HEADER false);

जो उत्पन्न करेगा (PostgreSQL के सर्वर को भेजेगा):

COPY paymentMethods (name,regexString) FROM E'c:\\server\\data\\paymentMethods.csv' WITH (FORMAT csv, HEADER true);
COPY priceLevels (name) FROM E'c:\\server\\data\\priceLevels.csv' WITH (FORMAT csv, HEADER false);

यह :'var' सिंटैक्स सभी psql पर काम नहीं करेगा संस्करण (मुझे अब याद नहीं है कि यह कौन सा पेश किया गया था), लेकिन पुराने संस्करणों के लिए आप आसानी से डॉलर-उद्धरण का उपयोग कर सकते हैं:

\set path 'c:\\server\\data\\'
\set paymentMethodsPath :path 'paymentMethods.csv'
\set priceLevelsPath :path 'priceLevels.csv'
COPY paymentMethods (name,regexString) FROM $$:paymentMethodsPath$$ WITH (FORMAT csv, HEADER true);
COPY priceLevels (name) FROM $$:priceLevels$$ WITH (FORMAT csv, HEADER false);

या एकल-उद्धरणों में भाग लें:

\set path 'c:\\server\\data\\'
\set paymentMethodsPath 'E''':path'paymentMethods.csv'''
\set priceLevelsPath 'E''':path'priceLevels.csv'''
COPY paymentMethods (name,regexString) FROM :paymentMethodsPath WITH (FORMAT csv, HEADER true);
COPY priceLevels (name) FROM :priceLevels WITH (FORMAT csv, HEADER false);

बस इतना ही।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. जावा से मेरे हरोकू पोस्टग्रेएसक्यूएल डेटाबेस से कैसे जुड़ें?

  2. PostgreSQL पर एकाधिक सूत्र

  3. शहर की सीमा में लेट लॉन्ग है या नहीं, इसकी जांच कैसे करें

  4. Postgresql में सेकेंडरी इंडेक्स की परिभाषा क्या है?

  5. Django ORM में क्लॉज से सबक्वायरी कैसे लिखें?