PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

PostgreSQL में, COPY कमांड के साथ डेटा कैसे डालें?

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 का उपयोग कैसे करें


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. हेरोकू रेल 4 सर्वर से कनेक्ट नहीं हो सका:कनेक्शन अस्वीकृत

  2. PostgreSQL:कमांड लाइन के माध्यम से PostgreSQL डेटाबेस को छोड़ें

  3. ISNULL के लिए PostgreSQL समकक्ष क्या है ()

  4. Heroku psql:FATAL:शेष कनेक्शन स्लॉट गैर-प्रतिकृति सुपरयूज़र कनेक्शन के लिए आरक्षित हैं

  5. PostgreSQL में क्वेरी परिणामों को कैसे फ़िल्टर करें