पोस्टगेज में स्टॉपिन से कॉपी का उपयोग


14

मैंने अभी Postgres का उपयोग करना शुरू किया है और मैं इसके कार्यों को समझने के लिए एक नमूना db बनाने की कोशिश कर रहा हूं, चारों ओर देखते हुए, मुझे pgfoundry.org में कुछ स्क्रिप्ट मिलीं। मैं कमांड्स को समझता हूं, क्योंकि मैंने पहले ओरेकल और एमएस-एसक्यूएल दोनों का उपयोग किया था, लेकिन जब मैं "कॉपी से" निर्देश पर पहुंचता हूं तो सभी स्क्रिप्ट्स मैं रिटर्न त्रुटियां चल रही हैं। अधिक सटीक रूप से, त्रुटि को पहले तत्व पर फेंक दिया जाता है जिसे दिए गए तालिका में डाला जाना चाहिए।

मैंने स्क्रिप्ट को क्वेरी और pgScripts दोनों के रूप में चलाने की कोशिश की है, लेकिन दोनों ही तरीकों से मुझे COPY FROM के बाद पहली पंक्ति में एक त्रुटि मिल रही है।

मैं pgAdminIII का उपयोग कर रहा हूं और मैंने DB ड्राइवर के रूप में PostgreSQL 9.2.4.1 को स्थापित करने के लिए StackBuilder का उपयोग किया। क्या मुझे कुछ बुनियादी विन्यास याद आ रहे हैं जो मुझे इस कमांड को चलाने से रोक रहे हैं, या मुझे समझ में नहीं आया कि वे इस तरह से काम करते हैं?

संपादित करें:
त्रुटि है:

ERROR:  syntax error at or near "7"
LINE 5600: 7 4 13 37 2012-03-10 16:41:43.797787 2012-03-10 16:41:43.797...
           ^

********** Error **********

ERROR: syntax error at or near "7"
SQL status: 42601
Char: 140891`

जहां पाठ है:

COPY action_abilitations (id, group_action_id, partecipation_role_id, group_id, created_at, updated_at) FROM stdin;
7   4   13  37  2012-03-10 16:41:43.797787  2012-03-10 16:41:43.797787`

1
Dba.SE में आपका स्वागत है। आपको इस तरह के एक प्रश्न के साथ (शब्दशः) त्रुटि संदेश शामिल करने की आवश्यकता है। यदि आपका स्थान गैर-अंग्रेज़ी नहीं है, तो आप डिफ़ॉल्ट अंग्रेजी त्रुटि संदेश प्राप्त करने के लिए स्क्रिप्ट चलाने से पहले अपने सत्र में इसे रीसेट कर सकते हैं: SET lc_messages = Cबस इसे अपने SQL संपादक विंडो में चलाएं, जिसमें "सत्र" है।
एरविन ब्रान्डसेट्टर

धन्यवाद, मैं यह जानने की कोशिश कर रहा हूं कि अपना स्थान कैसे बदलना है, मैं त्रुटि संदेश शामिल करूंगा जैसे ही मैं यह पता लगाऊंगा कि यह कैसे करना है।
यूजीनियो लागी

1
ओह, मैं एक उद्धरण भूल गया SET lc_messages = 'C':।
इरविन ब्रान्डेसटेटर

जवाबों:


10

pgScript pgAdmin का एक स्थानीय स्क्रिप्ट एक्सटेंशन है, जिसे आप शायद यहां नहीं चाहते हैं।

pgAdmin एक GUI है, कंसोल एप्लिकेशन नहीं है - ऐसा कोई भी नहीं है stdinजिसे आप आसानी से उपयोग कर सकते हैं। यदि आपको stdinअपनी सामग्री को स्ट्रीम करने की आवश्यकता है, तो psql का उपयोग करें, जो कंसोल एप्लिकेशन है - \copypsql के मेटा-कमांड के साथ

यदि आपके पास एक फ़ाइल है (जो आप स्पष्ट रूप से करते हैं), तो बस COPYpgAdmin से SQL का उपयोग करें :

COPY action_abilitations (id, group_action_id, ...)
FROM 'C:\Users\usernexus\Desktop\database05-12-2012.sql';

फ़ाइल को postgresसिस्टम उपयोगकर्ता के लिए पठनीय होना चाहिए ।

इस pgAdmin समर्थन सूची से संबंधित अनुरोध में अधिक जानकारी ।


ठीक है, क्या आपका मतलब है कि मुझे स्क्रिप्ट को एक लाइन के साथ चलाना चाहिए जैसे psql postgres -p 5432 -f C:\Users\usernexus\Desktop\database05-12-2012.sql:? इसके अलावा, मैं सिर्फ स्थानीय रूप से सब कुछ कोशिश कर रहा हूं, मैंने सिर्फ अपने लैपटॉप पर pgAdmin स्थापित किया है।
यूजेनियो लागी

1
@ यूजीनियोलाघी: बिल्कुल नहीं। psql -fSQL स्क्रिप्ट फ़ाइल निष्पादित करेगा। आप डेटा फ़ाइल के साथ व्यवहार करते हैं । मैंने अपना उत्तर अपडेट कर दिया।
इरविन ब्रान्डसेट्टर २६'१३

धन्यवाद! शुरुआत में मैं एक स्क्रिप्ट को निष्पादित करने की कोशिश कर रहा था, लेकिन अब कम से कम मुझे लगा कि एक फ़ाइल से डेटा कॉपी कैसे किया जाए! कल शाम मैं सिर्फ समझने के लिए बहुत थक गया था .. :)
यूजीनियो लागी

आप कैसे सुनिश्चित करते हैं कि पोस्टग्रैज उपयोगकर्ता फाइल को पढ़ सकता है। मैंने अपने डेस्कटॉप (यहां तक ​​कि फ़ाइल स्थित है) के लिए भी txt फ़ाइल के लिए ऐसा किया, लेकिन अनुमति अभी भी अस्वीकार की गई है।

@Geo: कृपया एक नया प्रश्न शुरू करें जिसमें Postgres संस्करण, OS, जहाँ फ़ाइल निहित है, आपके द्वारा उपयोग की जाने वाली शब्दशः कमांड और अधिक प्रासंगिक हो तो ...
Erwin Brandstetter
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.