मैं PostgreSQL में स्थानीय फ़ाइल से दूरस्थ DB में कैसे कॉपी कर सकता हूं? [बन्द है]


9

मैं psql में एक नौसिखिया हूँ और कुछ मदद की ज़रूरत है। मैं एक स्थानीय CSV को दूरस्थ DB में कैसे लोड कर सकता हूं?

मैं निम्नलिखित कमांड का उपयोग कर रहा हूं

\COPY test(user_id, product_id, value) 
      FROM '/Users/testuser/test.tsv' WITH DELIMITER '\t' CSV HEADER;

लेकिन यह दूरस्थ DB पर फ़ाइल को खोजता है जबकि मुझे अपने स्थानीय पीसी पर ऐसा करने की आवश्यकता है।


4
\copyएक स्थानीय फ़ाइल पढ़ता है (यह एक psqlकमांड है और इसे केवल अंदर से उपयोग किया जा सकता है psql)। COPYहालाँकि (ध्यान दें कि लापता ``) सर्वर पर फ़ाइल को पढ़ेगा।
a_horse_with_no_name 14

इसलिए इसका कोई तरीका नहीं है? मुझे दूरस्थ सर्वर पर फ़ाइल को कॉपी करने की आवश्यकता है?
user22149

क्या कॉपी और \ कॉपी में कोई अंतर है? क्षमा करें, मैं वास्तव में psql में नया हूँ केवल यह जानता हूं कि मैं किसी भी समस्या के बिना ऐसा कर सकता हूं
user22149

खैर अंतर यह है, कि एक फाइल को सर्वर पर पढ़ता है और दूसरा क्लाइंट पर फाइल को पढ़ता है। जाहिर है कि सर्वर पर फाइल पढ़ना तेज होगा।
a_horse_with_no_name 15

1
@ user22149 शाब्दिक टैब का उपयोग करें या E'\t'। यदि आप किसी भी तरह एक परिसीमन निर्दिष्ट नहीं करते हैं लेकिन टैब डिफ़ॉल्ट होना चाहिए।
क्रेग रिंगर

जवाबों:


5

यहां दो संभावनाएं हैं।

  1. यदि आप psql का उपयोग कर रहे हैं, तो \ copy आपके द्वारा बताए अनुसार चीजों को करने का सही तरीका है।

  2. यदि आप एक क्लाइंट प्रोग्राम का उपयोग कर रहे हैं जिसे आपने लेखक किया है, तो आपको इसकी आवश्यकता है

    COPY FROM STDIN.....

और फिर फ़ाइल को फ़ीड करें ( COPY कमांड पर दस्तावेज़ देखें) ।

COPY कमांड थोड़ा अजीब जानवर है। यह एक कमांड है PostgreSQL वर्तमान में क्वेल से समर्थन करता है और इसलिए यह दोनों गैर-मानक है, और बाकी आदेशों की तुलना में एक अलग प्रतिमान के आधार पर दोनों है। इस कारण से इस आदेश पर डॉक्स को अपेक्षाकृत ध्यान से पढ़ना महत्वपूर्ण है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.