COPY tbl FROM STDIN;
pgAdmin द्वारा समर्थित नहीं है।
आपको एक सादा सिंटैक्स त्रुटि मिलती है क्योंकि Postgres को SQL कोड के रूप में डेटा मिलता है।
चार संभावित समाधान:
1. एक बहु-पंक्ति का उपयोग करें INSERT
इसके बजाय:
INSERT INTO beer(name, tags, alcohol, brewery, id, brewery_id, image)
VALUES
('Bons Voeux', 'blonde', 9.5, 'Brasserie Dupont', 250, 130, 'generic.png')
, ('Boerke Blond', 'blonde', 6.8, 'Brouwerij Angerik', 233, 287 'generic.png')
;
स्ट्रिंग या न्यूमेरिक लिटरल के रूप में मानों के लिए अलग (एसक्यूएल) सिंटैक्स नोट करें।
आप pg_dump
. से डेटा जेनरेट कर सकते हैं --inserts
. का उपयोग करके . संबंधित:
- एक PostgreSQL तालिका से विशिष्ट पंक्तियों को INSERT SQL स्क्रिप्ट के रूप में निर्यात करें
2. या psql
. का उपयोग करके कमांड लाइन पर अपनी स्क्रिप्ट को कॉल करें . सिस्टम उपयोगकर्ता के रूप में postgres
:
psql -f beer.sql -U my_login_role -d db_name
डेटाबेस (-d
) और लॉगिन भूमिका (-U
"उपयोगकर्ता" के लिए) डिफ़ॉल्ट ठीक होने पर छोड़ा जा सकता है। सिंटैक्स उदाहरण:
- [टेम्पलेट], [एन्कोडिंग], [मालिक] और एक .sql फ़ाइल के साथ बैच फ़ाइल का उपयोग करके पोस्टग्रेज़ डेटाबेस बनाएँ
सुनिश्चित करें कि एक एंड-ऑफ़-डेटा मार्कर है (\.
) डिफ़ॉल्ट text
. के लिए प्रारूप। (आपके पास वह है।) मैनुअल:
डेटा के अंत को जस्टबैकस्लैश-अवधि (\.
. वाली एकल पंक्ति द्वारा दर्शाया जा सकता है ) फ़ाइल से पढ़ते समय एंड-ऑफ़-डेटा मार्कर आवश्यक नहीं है, क्योंकि फ़ाइल का अंत पूरी तरह से अच्छी तरह से कार्य करता है; इसकी आवश्यकता केवल प्री-3.0 क्लाइंट प्रोटोकॉल का उपयोग करके क्लाइंट एप्लिकेशन में या उससे डेटा कॉपी करते समय होती है।
3. या अपने डेटा को सर्वर पर एक अलग फ़ाइल में ले जाएं , 'beer_data.csv' कहें और COPY .. FROM 'filename'
का उपयोग करें आपकी स्क्रिप्ट में:
COPY beer (name, tags, alcohol, brewery, id, brewery_id, image)
FROM '/path/to/beer_data.csv';
जो किसी भी तरह से काम करता है। हालाँकि, आपको सुपरयुसर विशेषाधिकारों की आवश्यकता है। मैनुअल:
<ब्लॉककोट>
[...] COPY
किसी फ़ाइल या कमांड का नामकरण केवल डेटाबेस सुपरयूज़र या उन उपयोगकर्ताओं को करने की अनुमति है जिन्हें डिफ़ॉल्ट भूमिकाओं में से एक दिया गया हैpg_read_server_files
, pg_write_server_files
, याpg_execute_server_program
, क्योंकि यह किसी भी फाइल को पढ़ने या लिखने या प्रोग्राम चलाने की अनुमति देता है जिसे एक्सेस करने के लिए सर्वर के पास विशेषाधिकार हैं।
(pg_read_server_files
, pg_write_server_files
और pg_execute_server_program
Postgres 11 में नए हैं।)
4. या क्लाइंट . के लिए स्थानीय फ़ाइल पढ़ें psql मेटा-कमांड के साथ \copy
. देखें:
- पोस्टग्रेज में CSV फ़ाइल के मानों के साथ चयनित पंक्तियों को कैसे अपडेट करें?
- pgadmin4 के साथ postgresql में \ copy का उपयोग कैसे करें