2015-10-26 5 views
11

मेरे पास एक सीएसवी फ़ाइल है।पोस्टग्रेस्क्ल डीबी (रिमोट डीबी) में सीएसवी डेटा कैसे सम्मिलित करें

यदि डेटा और डीबी नीचे कमांड का उपयोग कर उसी सर्वर में उपलब्ध है तो मैं डेटा डाल सकता हूं।

psql -h localhost -d local_mydb -U myuser -c "copy mytable (column1, column2) from '/path/to/local/file.csv' with delimiter as ','" 

लेकिन फ़ाइल स्थानीय सर्वर में है, लेकिन, db किसी अन्य सर्वर (रिमोट)

तो मैं दूरस्थ सर्वर के लिए ऐसा करने के लिए, कमांड

psql -h remotehost -d remote_mydb -U myuser -c "copy mytable (column1, column2) from '/path/to/local/file.csv' with delimiter as ','" 

नीचे का उपयोग करके देखें अनुमति नहीं दी हो रही है में उपलब्ध है अपवाद।

मैं यह कैसे कर सकता हूं?

उत्तर

14

\copy (बैकस्लैश नोट करें) आपको दूरस्थ डेटाबेस से कॉपी करने देता है और सुपरसियर विशेषाधिकारों की आवश्यकता नहीं होती है।

psql -h remotehost -d remote_mydb -U myuser -c "\copy mytable (column1, column2) from '/path/to/local/file.csv' with delimiter as ','" 

आप जावा का उपयोग कर रहे हैं, तो आप JDBC ड्राइवर में CopyManager उपयोग कर सकते हैं: https://jdbc.postgresql.org/documentation/publicapi/org/postgresql/copy/CopyManager.html

+0

मैं तुम्हारा और Schwern के ऊपर की कोशिश की। यह ठीक काम कर रहा है (कंसोल से)। लेकिन, जब मैं जावा कोड से यह कोशिश कर रहा हूं, तो "\" वाक्यविन्यास त्रुटि प्राप्त हो रही है। – Spike

+0

ध्यान दें कि ['\ copy' एक psql कमांड है] (http://www.postgresql.org/docs/current/static/app-psql.html#APP-PSQL-META-COMMANDS-COPY)। यह अन्य संदर्भों में काम नहीं करेगा। – Schwern

12

आप एसटीडीआईएन के माध्यम से फ़ाइल को खिला सकते हैं। PostgreSQL COPY documentation से ...

जब एसटीडीआईएन या एसटीडीओयूटी निर्दिष्ट किया जाता है, तो ग्राहक क्लाइंट और सर्वर के बीच कनेक्शन के माध्यम से प्रसारित होता है।

psql -h remotehost -d remote_mydb -U myuser -c \ 
    "copy mytable (column1, column2) from STDIN with delimiter as ','" \ 
    < /path/to/local/file.csv 

मैं FROM PROGRAM उपयोग के बारे में गलत था। इसमें FROM 'filename' के समान ही चेतावनी है। सर्वर प्रोग्राम को निष्पादित करता है, क्लाइंट नहीं।

जब कार्यक्रम निर्दिष्ट किया जाता है, सर्वर दिए गए आदेश निष्पादित करता है और कार्यक्रम के मानक आउटपुट से पढ़ता है, या कार्यक्रम के मानक इनपुट करने के लिए लिखता है। आदेश सर्वर के दृष्टिकोण से निर्दिष्ट किया जाना चाहिए, और PostgreSQL उपयोगकर्ता द्वारा निष्पादन योग्य होना चाहिए।

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