2011-07-07 18 views
9

संबंधित लिंक:postgres एकल उद्धरण से बचने dblink

यहाँ मेरी त्रुटि है:

ERROR: type "e" does not exist 

यहाँ मेरी क्वेरी है:

SELECT * 
FROM dblink('host=theHostName port=1234 dbname=theDBName user=theUser password=thePassword', 
    E'SELECT field_1, 
    CASE WHEN field_2 IS NOT NULL 
    THEN \'inactive\' ELSE \'active\' 
    END AS field_status 
    FROM the_table 
    ') 
AS linkresults(field_1 varchar(20),field_2 varchar(8)) 

अगर मैं यू se डबल कोट, एकल उद्धरण के लिए बैकस्लैश भागने को हटाने और SELECT कथन से पहले ई हटाने

SELECT * 
FROM dblink('host=theHostName port=1234 dbname=theDBName user=theUser password=thePassword', 
    "SELECT field_1, 
    CASE WHEN field_2 IS NOT NULL 
    THEN 'inactive' ELSE 'active' 
    END AS field_status 
    FROM the_table 
    ") 
AS linkresults(field_1 varchar(20),field_2 varchar(8)) 

मैं इस मिल:

NOTICE: identifier "SELECT ..." will be truncated 

और मैं के रूप में भी अपनी क्वेरी किया गया है त्रुटि मिलती है छोटा कर दिया।

मैं इस तरह से dblink से बच गया है, तो क्या कोई सर्वर सेटिंग या कुछ कॉन्फ़िगर करने की आवश्यकता है?

मुझे पता है कि क्वेरी ठीक काम करता है अगर मैं इसे SQL सर्वर पर चलाता हूं, लेकिन dblink के साथ नहीं। कोई विचार?

Postgres संस्करण 8.4

+0

@n आपकी पोस्ट काम करता है, इसे क्यों हटाएं? –

+0

मैंने इसे और अधिक सरल में अपडेट किया है। अगर यह काम नहीं करता है तो मैं पिछले जवाब की रिपोर्ट कर सकता हूं। – niktrs

उत्तर

16

'निष्क्रिय' 'के साथ' 'निष्क्रिय \' \ बजाय ऐसे - सावधानी: दो एकल उद्धरण

SELECT * 
    FROM dblink('host=theHostName port=1234 dbname=theDBName user=theUser password=thePassword', 
     'SELECT field_1, 
     CASE WHEN field_2 IS NOT NULL 
     THEN ''inactive'' ELSE ''active'' 
     END AS field_status 
     FROM the_table 
     ') 

AS linkresults(field_1 varchar(20),field_2 varchar(8)) 

वैकल्पिक (पिछले) समाधान

SELECT * 
    FROM dblink('host=theHostName port=1234 dbname=theDBName user=theUser password=thePassword', 
     'SELECT field_1, 
     CASE WHEN field_2 IS NOT NULL 
     THEN E\'inactive\' ELSE E\'active\' 
     END AS field_status 
     FROM the_table 
     ') 

AS linkresults(field_1 varchar(20),field_2 varchar(8)) 
+0

मुझे बताएं कि क्या विकल्प भी काम करता है। जानना चाहूंगा क्योंकि मेरे पीसी में पोस्टग्रे स्थापित नहीं है। – niktrs

+0

ई \ 'निष्क्रिय \' यह मेरे लिए दो एकल उद्धरण ' –

+0

का उपयोग करके आपके अन्य समाधान के साथ काम करता है आप $$ शैली उद्धरण भी उपयोग कर सकते हैं। –

3

इस क्वेरी को आज़माएं:

SELECT * 
FROM dblink('host=theHostName port=1234 dbname=theDBName user=theUser password=thePassword', 
'SELECT field_1, 
CASE WHEN field_2 IS NOT NULL 
THEN $$inactive$$ ELSE $$active$$ 
END AS field_status 
FROM the_table') 
AS linkresults(field_1 varchar(20),field_2 varchar(8)) 
+0

थोड़ा और संदर्भ देना और कोड ब्लॉक का उपयोग करके इस उत्तर में सुधार होगा। –

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