PostgreSQL से CSV फ़ाइल में PL / pgSQL आउटपुट सहेजें


910

PostgreSQL डेटाबेस से CSV फ़ाइल में PL / pgSQL आउटपुट को बचाने का सबसे आसान तरीका क्या है?

मैं PostgreSQL 8.4 pgAdmin III और PSQL प्लगइन के साथ उपयोग कर रहा हूं, जहां से मैं प्रश्न चलाता हूं।


1
इन्हें भी देखें stackoverflow.com/q/1120109/287948
पीटर क्रूस

जवाबों:


1367

क्या आप सर्वर पर, या क्लाइंट पर परिणामी फ़ाइल चाहते हैं?

सर्वर साइड

यदि आप फिर से उपयोग या स्वचालित करने के लिए कुछ आसान चाहते हैं, तो आप COPY कमांड में निर्मित Postgresql का उपयोग कर सकते हैं । जैसे

Copy (Select * From foo) To '/tmp/test.csv' With CSV DELIMITER ',' HEADER;

यह दृष्टिकोण पूरी तरह से रिमोट सर्वर पर चलता है - यह आपके स्थानीय पीसी पर नहीं लिख सकता है। इसे पोस्टग्रेज "सुपरसुसर" (जिसे आमतौर पर "रूट" कहा जाता है) के रूप में चलाने की आवश्यकता होती है क्योंकि पोस्टग्रेज इसे मशीन के स्थानीय फाइल सिस्टम के साथ गंदा काम करने से रोक नहीं सकते हैं।

इसका मतलब यह नहीं है कि आपको एक सुपरयुसर के रूप में जोड़ा जाना चाहिए (स्वचालित रूप से एक अलग तरह का सुरक्षा जोखिम होगा), क्योंकि आप एक फ़ंक्शन बनाने के लिए SECURITY DEFINERविकल्प काCREATE FUNCTION उपयोग कर सकते हैं जो एक सुपरयूज़र के रूप में चलता है

महत्वपूर्ण हिस्सा यह है कि आपका फ़ंक्शन अतिरिक्त चेक करने के लिए है, न कि केवल सुरक्षा पास करने के लिए - इसलिए आप एक फ़ंक्शन लिख सकते हैं जो आपको आवश्यक सटीक डेटा निर्यात करता है, या आप कुछ लिख सकते हैं जो विभिन्न विकल्पों को स्वीकार कर सकते हैं जब तक कि वे एक सख्त वाइटेलिस्ट से मिलें। आपको दो चीजों की जाँच करने की आवश्यकता है:

  1. डिस्क पर उपयोगकर्ता को किन फ़ाइलों को पढ़ने / लिखने की अनुमति दी जानी चाहिए? उदाहरण के लिए, यह एक विशेष निर्देशिका हो सकती है, और फ़ाइल नाम के लिए एक उपयुक्त उपसर्ग या विस्तार हो सकता है।
  2. डेटाबेस में उपयोगकर्ता को कौन सी टेबल पढ़ने / लिखने में सक्षम होना चाहिए? यह सामान्य रूप GRANTसे डेटाबेस में s द्वारा परिभाषित किया जाएगा , लेकिन फ़ंक्शन अब एक सुपरयुसर के रूप में चल रहा है, इसलिए तालिकाएं जो सामान्य रूप से "सीमा से बाहर" होंगी, पूरी तरह से सुलभ होंगी। आप शायद किसी को अपने कार्य को शुरू नहीं करने देना चाहते हैं और अपने "उपयोगकर्ता" तालिका के अंत में पंक्तियाँ जोड़ना चाहते हैं ...

मैंने इस दृष्टिकोण पर विस्तार करते हुए एक ब्लॉग पोस्ट लिखा है , जिसमें कुछ ऐसे फ़ंक्शंस शामिल हैं जो सख्त शर्तों को पूरा करने वाली फ़ाइलों और तालिकाओं को निर्यात (या आयात) करते हैं।


ग्राहक की ओर

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

इसके लिए अंतर्निहित सिंटैक्स COPY TO STDOUTकमांड है, और pgAdmin जैसे ग्राफिकल टूल इसे आपके लिए एक अच्छे संवाद में लपेटेंगे।

psqlकमांड लाइन ग्राहक एक विशेष "मेटा-आदेश" कहा जाता है \copy, जो "वास्तविक" सभी एक ही विकल्प लेता है COPY, लेकिन ग्राहक के अंदर चलाया जाता है:

\copy (Select * From foo) To '/tmp/test.csv' With CSV

ध्यान दें कि कोई समाप्ति नहीं है ;, क्योंकि मेटा-कमांड एसक्यूएल कमांड के विपरीत, नईलाइन द्वारा समाप्त किए जाते हैं।

से डॉक्स :

साइक अनुदेश \ कॉपी के साथ कॉपी को भ्रमित न करें। \ copy STDIN से COPY को कॉपी करता है या STDOUT को कॉपी करता है, और फिर psql क्लाइंट के लिए सुलभ फ़ाइल में डेटा संग्रहीत / संग्रहीत करता है। इस प्रकार, फ़ाइल की पहुँच और पहुँच अधिकार क्लाइंट पर निर्भर करते हैं न कि सर्वर की जब \ copy का उपयोग किया जाता है।

आपकी एप्लिकेशन प्रोग्रामिंग भाषा में डेटा को पुश करने या लाने के लिए भी समर्थन हो सकता है , लेकिन आप आमतौर पर एक मानक SQL स्टेटमेंट के भीतर COPY FROM STDIN/ उपयोग नहीं कर सकते TO STDOUT, क्योंकि इनपुट / आउटपुट स्ट्रीम को जोड़ने का कोई तरीका नहीं है। PHP के PostgreSQL हैंडलर ( पीडीओ नहीं ) में बहुत बुनियादी pg_copy_fromऔर pg_copy_toफ़ंक्शंस शामिल हैं जो एक PHP सरणी से / के लिए कॉपी करते हैं, जो बड़े डेटा सेट के लिए कुशल नहीं हो सकता है।


131
स्पष्ट रूप से ऊपर के उदाहरण के लिए कभी-कभी उपयोगकर्ता को सुपरयुसर होने की आवश्यकता होती है, यहां आम लोगों के लिए एक संस्करण है;) गूंज "CSY हेडर के साथ कॉपी (foo से foo)" कॉपी ()। psql -ओ '/tmp/test.csv' Database_Name
Drachenfels

10
@Drachenfels: \copyकाम करता है, भी - वहाँ, पथ क्लाइंट के सापेक्ष हैं, और किसी अर्धविराम की आवश्यकता / अनुमति नहीं है। मेरा संपादन देखें।
krlmlr

3
@IMSoP: एक sql (9.3 पोस्टग्रेज्स पर) फ़ंक्शन में आप COPY स्टेटमेंट को कैसे जोड़ेंगे? तो क्वेरी को .csv फ़ाइल में सहेजा जाता है?
जे.ओ.

12
ऐसा लगता है कि \copyवन-लाइनर होना जरूरी है। इसलिए आपको अपनी इच्छानुसार sql को फ़ॉर्मेट करने और उसके चारों ओर कॉपी / फ़ंक्शन लगाने की सुंदरता नहीं मिलती है।
isallw

1
@AndreSilva उत्तर के रूप में, कमांड-लाइन क्लाइंट में\copy एक विशेष मेटा-कमांड हैpsql । यह pgAdmin जैसे अन्य क्लाइंट में काम नहीं करेगा; इस कार्य को करने के लिए उनके पास संभवतः अपने स्वयं के उपकरण होंगे, जैसे कि ग्राफिकल विज़ार्ड्स।
IMSoP

519

कई समाधान हैं:

1 psqlआज्ञा

psql -d dbname -t -A -F"," -c "select * from users" > output.csv

इसका बड़ा फायदा है कि आप इसे SSH के माध्यम से उपयोग कर सकते हैं, जैसे ssh postgres@host command- आपको प्राप्त करने के लिए सक्षम करना

2 पोस्ट copyकमांड

COPY (SELECT * from users) To '/tmp/output.csv' With CSV;

3 पीएसएल इंटरैक्टिव (या नहीं)

>psql dbname
psql>\f ','
psql>\a
psql>\o '/tmp/output.csv'
psql>SELECT * from users;
psql>\q

उन सभी को स्क्रिप्ट में उपयोग किया जा सकता है, लेकिन मैं # 1 पसंद करता हूं।

4 pgadmin लेकिन यह स्क्रिप्ट योग्य नहीं है।


32
IMHO पहला विकल्प त्रुटि प्रवण है, क्योंकि इसमें निर्यात किए गए डेटा में अल्पविराम से बचना शामिल नहीं है।
पायोएन

4
इसके अलावा, psql सेल वैल्यू को कोट नहीं करता है, इसलिए यदि आपका कोई डेटा सीमांकक का उपयोग करता है, तो आपकी फ़ाइल दूषित हो जाएगी।
सेरिन

7
@Cerin -t, केवल -tuples-only (कॉलम नामों की छपाई बंद करने और परिणाम पंक्ति गणना पाद, आदि) का एक पर्याय है - कॉलम हेडर प्राप्त करने के लिए इसे छोड़ दें
ic3b3rg

21
सिर्फ अल्पविराम से बचने के दावे का परीक्षण किया- यह सही है, विधि # 1 मूल्यों में अल्पविराम से नहीं बचती है।
21 अक्टूबर को MrColes

1
"\ pset footer" का भी उपयोग करें ताकि पंक्ति की गिनती फ़ाइल में न हो
techbrownbags

94

टर्मिनल में (db से जुड़ा होने पर) cv फाइल में आउटपुट सेट करता है

1) सेट फ़ील्ड सेपरेटर को ',':

\f ','

2) सेट आउटपुट स्वरूप अनलग:

\a

3) केवल टुपल्स दिखाएँ:

\t

4) सेट उत्पादन:

\o '/tmp/yourOutputFile.csv'

5) अपनी क्वेरी निष्पादित करें:

:select * from YOUR_TABLE

6) आउटपुट:

\o

फिर आप इस स्थान पर अपनी सीएसवी फ़ाइल पा सकेंगे:

cd /tmp

scpकमांड का उपयोग करके इसे कॉपी करें या नैनो का उपयोग करके संपादित करें:

nano /tmp/yourOutputFile.csv

4
और \ o क्रम में कंसोल को फिर से प्रिंट करने के लिए
मेटाडोस

2
यह CSV फ़ाइल का उत्पादन नहीं करेगा, यह केवल कमांड आउटपुट को टेक्स्ट फ़ाइल में रिकॉर्ड करेगा (जो इसे अल्पविराम से अलग नहीं करता है)।
रुसलान कबालिन

@RuslanKabalin हाँ, मैंने अभी-अभी नोट किया है और अल्पविराम से अलग आउटपुट (cv) बनाने के निर्देश को संशोधित किया है
Marcin Wasiluk

5
मैं इस उत्तर को ध्यान में रखते हुए सुधार करूंगा कि "csv" आउटपुट ठीक से बच नहीं पाएगा और हर बार एक sql कमांड निष्पादित होने पर परिणाम आउटपुट फ़ाइल के लिए संक्षिप्त हो जाते हैं।
डैनी आर्मस्ट्रांग

क्षेत्र मूल्यों में नई कहानियों के बारे में क्या? COPYया \copyसही ढंग से संभाल दृष्टिकोण (परिवर्तित मानक सीएसवी प्रारूप के लिए); क्या ये?
वाइल्डकार्ड

37

यदि आप शीर्ष लेख के साथ किसी विशेष तालिका के सभी स्तंभों में रुचि रखते हैं, तो आप उपयोग कर सकते हैं

COPY table TO '/some_destdir/mycsv.csv' WITH CSV HEADER;

यह की तुलना में एक छोटा सा सरल है

COPY (SELECT * FROM table) TO '/some_destdir/mycsv.csv' WITH CSV HEADER;

जो, मेरे सर्वश्रेष्ठ ज्ञान के बराबर हैं।


1
यदि क्वेरी कस्टम है (IE में कॉलम एलियास या विभिन्न तालिकाओं में शामिल होना), तो हेडर कॉलम एलियास को स्क्रीन पर प्रदर्शित होते ही प्रिंट कर देगा।
देवी

33

CSV निर्यात एकीकरण

यह जानकारी वास्तव में अच्छी तरह से प्रतिनिधित्व नहीं करती है। जैसा कि यह दूसरी बार है जब मुझे इसे प्राप्त करने की आवश्यकता है, मैं इसे खुद को याद दिलाने के लिए यहां रखूंगा अगर कुछ और नहीं।

वास्तव में ऐसा करने का सबसे अच्छा तरीका है (सीएसवी को पोस्टग्रेट्स से बाहर निकालें) COPY ... TO STDOUTकमांड का उपयोग करना है । यद्यपि आप इसे यहां के उत्तरों में दिखाए गए तरीके से नहीं करना चाहते हैं। कमांड का उपयोग करने का सही तरीका है:

COPY (select id, name from groups) TO STDOUT WITH CSV HEADER

सिर्फ एक आदेश याद रखें!

यह ssh पर उपयोग के लिए बहुत अच्छा है:

$ ssh psqlserver.example.com 'psql -d mydb "COPY (select id, name from groups) TO STDOUT WITH CSV HEADER"' > groups.csv

यह ssh पर docker के अंदर उपयोग के लिए बहुत अच्छा है:

$ ssh pgserver.example.com 'docker exec -tu postgres postgres psql -d mydb -c "COPY groups TO STDOUT WITH CSV HEADER"' > groups.csv

यह स्थानीय मशीन पर भी महान है:

$ psql -d mydb -c 'COPY groups TO STDOUT WITH CSV HEADER' > groups.csv

या स्थानीय मशीन पर docker के अंदर ?:

docker exec -tu postgres postgres psql -d mydb -c 'COPY groups TO STDOUT WITH CSV HEADER' > groups.csv

या कुबेरनेट्स क्लस्टर पर, डॉकटर में, एचटीटीपीएस से अधिक ??

kubectl exec -t postgres-2592991581-ws2td 'psql -d mydb -c "COPY groups TO STDOUT WITH CSV HEADER"' > groups.csv

इतना बहुमुखी, बहुत अल्पविराम!

क्या आप कभी?

हां मैंने किया, यहां मेरे नोट्स हैं:

COPYses

का उपयोग करते हुए /copyप्रभावी रूप से जो कुछ भी सिस्टम पर फ़ाइल आपरेशन निष्पादित करता है psql, आदेश पर चल रहा है उपयोगकर्ता के लिए जो यह निष्पादित हो रहा है के रूप में 1 । यदि आप किसी दूरस्थ सर्वर से कनेक्ट करते हैं, तो दूरस्थ सर्वर psqlसे / के लिए निष्पादित सिस्टम पर डेटा फ़ाइलों को कॉपी करना सरल है ।

COPYसर्वर पर फ़ाइल संचालन निष्पादित करता है क्योंकि बैकएंड प्रक्रिया उपयोगकर्ता खाता (डिफ़ॉल्ट postgres), फ़ाइल पथ और अनुमतियाँ जाँच और तदनुसार लागू होती हैं। यदि उपयोग कर रहे हैं TO STDOUTतो फ़ाइल अनुमतियों की जाँच बाईपास की जाती है।

इन दोनों विकल्पों को बाद के फ़ाइल आंदोलन की आवश्यकता होती है यदि psql आप उस सिस्टम पर निष्पादित नहीं कर रहे हैं जहां आप परिणामी CSV चाहते हैं, तो अंततः। मेरे अनुभव में, जब आप ज्यादातर दूरस्थ सर्वर के साथ काम करते हैं, तो यह सबसे अधिक संभावना है।

सरल CSV आउटपुट के लिए दूरस्थ सिस्टम पर ssh पर TCP / IP टनल को कॉन्फ़िगर करने के लिए यह अधिक जटिल है, लेकिन अन्य आउटपुट फॉर्मेट (बाइनरी) के लिए यह /copyटनल कनेक्शन से बेहतर हो सकता है , एक लोकल को निष्पादित करना psql। एक समान नस में, बड़े आयात के लिए, स्रोत फ़ाइल को सर्वर में ले जाना और उपयोग करनाCOPY करना संभवतः उच्चतम-प्रदर्शन विकल्प है।

PSQL पैरामीटर

Psql मापदंडों के साथ आप CSV जैसे आउटपुट को प्रारूपित कर सकते हैं, लेकिन पेजर को अक्षम करने और हेडर प्राप्त नहीं करने के लिए याद रखने जैसे डाउनसाइड हैं:

$ psql -P pager=off -d mydb -t -A -F',' -c 'select * from groups;'
2,Technician,Test 2,,,t,,0,,                                                                                                                                                                   
3,Truck,1,2017-10-02,,t,,0,,                                                                                                                                                                   
4,Truck,2,2017-10-02,,t,,0,,

अन्य उपकरण

नहीं, मैं बस अपने सर्वर से CSV को बिना किसी उपकरण को संकलित और / या स्थापित किए बिना प्राप्त करना चाहता हूं।


1
परिणाम कहाँ से बचाए जाते हैं? मेरी क्वेरी चलती है लेकिन फ़ाइल मेरे कंप्यूटर पर कहीं दिखाई नहीं देती है। यह वही है जो मैं कर रहा हूँ: COPY (c का चयन करें, c से जहाँ d = '1') CSVHEADER> abcd.csv के साथ जुड़ने के लिए
kRazzy R

1
@kRazzyR आउटपुट psql कमांड के stdout में जाता है, इसलिए अंततः आप stdout के साथ जो भी करते हैं वह वह है जहां डेटा जाता है। मेरे उदाहरण में, मैं '> file.csv' का उपयोग एक फाइल पर रीडायरेक्ट करने के लिए करता हूं। आप यह सुनिश्चित करना चाहते हैं कि psql -c पैरामीटर के माध्यम से सर्वर को भेजे जा रहे कमांड के बाहर है। 'स्थानीय मशीन' उदाहरण देखें।
2

पूरी व्याख्या के लिए धन्यवाद। कॉपी कमांड psql के साथ निराशाजनक रूप से जटिल है। मैं अंत में डेटा फ़ाइलों को आयात और निर्यात करने के लिए एक मुफ्त डेटाबेस क्लाइंट (dbeaver सामुदायिक संस्करण) का उपयोग कर रहा हूं। यह अच्छा मानचित्रण और स्वरूपण उपकरण प्रदान करता है। आपका उत्तर दूरस्थ प्रणालियों से नकल के लिए महान विस्तृत उदाहरण प्रदान करता है।
रिच लिसाकोव्स्की पीएचडी

24

मुझे त्रुटि संदेश प्राप्त होने के कारण \ COPY का उपयोग करना पड़ा:

ERROR:  could not open file "/filepath/places.csv" for writing: Permission denied

इसलिए मैंने इस्तेमाल किया:

\Copy (Select address, zip  From manjadata) To '/filepath/places.csv' With CSV;

और यह कार्य कर रहा है


17

psql आप के लिए यह कर सकते हैं:

edd@ron:~$ psql -d beancounter -t -A -F"," \
                -c "select date, symbol, day_close " \
                   "from stockprices where symbol like 'I%' " \
                   "and date >= '2009-10-02'"
2009-10-02,IBM,119.02
2009-10-02,IEF,92.77
2009-10-02,IEV,37.05
2009-10-02,IJH,66.18
2009-10-02,IJR,50.33
2009-10-02,ILF,42.24
2009-10-02,INTC,18.97
2009-10-02,IP,21.39
edd@ron:~$

man psqlयहां उपयोग किए गए विकल्पों पर मदद के लिए देखें ।


12
यह एक सच्ची CSV फ़ाइल नहीं है - अगर डेटा में कॉमा हैं, तो इसे जला कर देखें - इसलिए अंतर्निहित COPY समर्थन का उपयोग करना पसंद किया जाता है। लेकिन यह सामान्य तकनीक CSV के अलावा अन्य सीमांकित स्वरूपों में Postgres से निर्यात करने के लिए एक त्वरित हैक के रूप में आसान है।
ग्रेग स्मिथ

16

मैं AWS रेडशिफ्ट पर काम कर रहा हूं, जो समर्थन नहीं करता है COPY TO सुविधा का ।

मेरा बीआई उपकरण टैब-सीमांकित सीएसवी का समर्थन करता है, हालांकि, मैंने निम्नलिखित का उपयोग किया:

 psql -h dblocation -p port -U user -d dbname -F $'\t' --no-align -c "SELECT * FROM TABLE" > outfile.csv

16

नया संस्करण - psql 12 - समर्थन करेगा --csv

psql - देवल

--csv

CSV (कोमा-सेपरेटेड वैल्यूज़) आउटपुट मोड पर स्विच करता है। यह \ pset प्रारूप csv के बराबर है ।


csv_fieldsep

फ़ील्ड विभाजक को CSV आउटपुट स्वरूप में उपयोग करने के लिए निर्दिष्ट करता है। यदि विभाजक वर्ण किसी फ़ील्ड के मान में प्रकट होता है, तो मानक CSV नियमों का पालन करते हुए, वह फ़ील्ड डबल कोट्स के भीतर आउटपुट होता है। डिफ़ॉल्ट एक अल्पविराम है।

उपयोग:

psql -c "SELECT * FROM pg_catalog.pg_tables" --csv  postgres

psql -c "SELECT * FROM pg_catalog.pg_tables" --csv -P csv_fieldsep='^'  postgres

psql -c "SELECT * FROM pg_catalog.pg_tables" --csv  postgres > output.csv

11

PgAdmin III में क्वेरी विंडो से फाइल करने के लिए निर्यात करने का विकल्प है। मुख्य मेनू में यह क्वेरी है -> फाइल करने के लिए निष्पादित करें या एक बटन है जो एक ही काम करता है (यह एक हरे रंग की त्रिकोण है जिसमें एक नीली फ्लॉपी डिस्क है जो सादे हरे त्रिकोण के विपरीत है जो बस क्वेरी चलाता है)। यदि आप क्वेरी विंडो से क्वेरी नहीं चला रहे हैं तो मैं वही करूंगा जो IMSoP ने सुझाया था और कॉपी कमांड का उपयोग किया था।


IMSoP का जवाब मेरे लिए काम नहीं आया क्योंकि मुझे एक सुपर एडमिन बनने की जरूरत थी। इसने एक ट्रीट का काम किया। धन्यवाद!
माइक

9

मैंने कई चीजों की कोशिश की, लेकिन उनमें से कुछ मुझे हेडर विवरण के साथ वांछित सीएसवी देने में सक्षम थे।

यहाँ मेरे लिए क्या काम किया है।

psql -d dbame -U username \
  -c "COPY ( SELECT * FROM TABLE ) TO STDOUT WITH CSV HEADER " > \
  OUTPUT_CSV_FILE.csv

9

मैंने थोड़ा उपकरण लिखा है जिसे पैटर्न कहा जाता psql2csvहै COPY query TO STDOUT, जिसके परिणामस्वरूप उचित CSV होता है। यह इंटरफ़ेस के समान है psql

psql2csv [OPTIONS] < QUERY
psql2csv [OPTIONS] QUERY

क्वेरी को STDIN की सामग्री माना जाता है, यदि मौजूद है, या अंतिम तर्क है। इनके अलावा अन्य सभी तर्क psql को भेजे गए हैं:

-h, --help           show help, then exit
--encoding=ENCODING  use a different encoding than UTF8 (Excel likes LATIN1)
--no-header          do not output a header

2
बहुत अच्छा काम करता है। धन्यवाद।
एलेक्सएम

6

यदि आपके पास लंबी क्वेरी है और आप psql का उपयोग करना पसंद करते हैं तो अपनी क्वेरी को किसी फ़ाइल में डालें और निम्न कमांड का उपयोग करें:

psql -d my_db_name -t -A -F";" -f input-file.sql -o output-file.csv

FWIW, मुझे CSV फ़ाइल उत्पन्न करने के लिए उपयोग -F","करना था -F";"जो MS Excel में सही रूप से खुलेगा
CFL_Jeff

4

CSAD फ़ाइल को स्तंभ नामों के साथ डाउनलोड करने के लिए जैसे हीर इस कमांड का उपयोग करता है:

Copy (Select * From tableName) To '/tmp/fileName.csv' With CSV HEADER;

1

मैं JetGrains द्वारा एक डेटाबेस IDE DataGrip की अत्यधिक अनुशंसा करता हूं । आप एक CSV फ़ाइल में SQL क्वेरी निर्यात कर सकते हैं , और आसानी से ssh टनलिंग सेट कर सकते हैं। जब दस्तावेज़ीकरण "परिणाम सेट" को संदर्भित करता है, तो उनका मतलब है कि कंसोल में SQL क्वेरी द्वारा लौटाया गया परिणाम।

मैं DataGrip से जुड़ा नहीं हूं, मुझे सिर्फ उत्पाद पसंद है!


मैं अनुमान लगा रहा हूं कि गिरावट संदर्भ / स्पष्टीकरण की कमी के कारण थी, इसलिए मैंने डेटाग्रिप प्रलेखन से जुड़ा हुआ है। यदि डाउनवोट का कोई अलग कारण है, तो कृपया मुझे बताएं। मैंने ऊपर CLI समाधानों का उपयोग किया है और DataGrip छोटे प्रश्नों के लिए बहुत आसान है।
स्कीलर88

DataGrip के साथ समस्या यह है कि यह आपके वॉलेट पर पकड़ बनाता है। यह स्वतंत्र नहीं है। Dbeaver.io पर DBeaver के सामुदायिक संस्करण का प्रयास करें । यह SQL प्रोग्रामर, DBA और विश्लेषकों के लिए एक FOSS मल्टी-प्लेटफ़ॉर्म डेटाबेस टूल है जो सभी लोकप्रिय डेटाबेस का समर्थन करता है: MySQL, PostgreSQL, SQLite, Oracle, DB2, SQL Server, Sybase, MS Access, Teradata, Firebird, Hive, Presto, आदि।
रिच लाइसाकोव्स्की पीएचडी

कूल मैं बाहर की जाँच करेंगे। कैसे के बारे में आप एक उत्तर के रूप में भी अपनी टिप्पणी repost?
skeller88

0

जैकबडी , आपके वेब ब्राउज़र का एक डेटाबेस क्लाइंट, यह वास्तव में आसान बनाता है। खासकर यदि आप हरोकू पर हैं।

यह आपको दूरस्थ डेटाबेस से कनेक्ट करने और उन पर SQL क्वेरी चलाने देता है।

                                                                                                                                                       स्रोत (स्रोत: jackdb.com )jackdb-Heroku


एक बार आपका DB कनेक्ट होने के बाद, आप एक क्वेरी चला सकते हैं और CSV या TXT को निर्यात कर सकते हैं (नीचे दाईं ओर देखें)।


jackdb निर्यात

नोट: मैं किसी भी तरह से जैकबीडी से संबद्ध नहीं हूं। मैं वर्तमान में उनकी मुफ्त सेवाओं का उपयोग करता हूं और लगता है कि यह एक बेहतरीन उत्पाद है।


0

@ Skeller88 के अनुरोध के अनुसार, मैं अपनी टिप्पणी को एक उत्तर के रूप में प्रस्तुत कर रहा हूं ताकि यह उन लोगों द्वारा खो न जाए जो हर समय ऐसा नहीं करते हैं ...

DataGrip के साथ समस्या यह है कि यह आपके वॉलेट पर पकड़ बनाता है। यह स्वतंत्र नहीं है। Dbeaver.io पर DBeaver के सामुदायिक संस्करण का प्रयास करें। यह SQL प्रोग्रामर, DBA और विश्लेषकों के लिए एक FOSS मल्टी-प्लेटफ़ॉर्म डेटाबेस टूल है जो सभी लोकप्रिय डेटाबेस का समर्थन करता है: MySQL, PostgreSQL, SQLite, Oracle, DB2, SQL Server, Sybase, MS Access, Teradata, Firebird, Hive, Presto, आदि।

DBeaver सामुदायिक संस्करण एक डेटाबेस से जुड़ने के लिए तुच्छ बनाता है, डेटा पुनः प्राप्त करने के लिए क्वेरीज़ जारी करता है, और फिर इसे CSV, JSON, SQL, या अन्य सामान्य डेटा स्वरूपों में सहेजने के लिए सेट किया गया परिणाम डाउनलोड करता है। यह पोस्टग्रैड्स के लिए TOAD, SQL सर्वर के लिए TOAD, या Oracle के लिए टॉड के लिए एक व्यवहार्य FOSS प्रतियोगी है।

DBeaver के साथ मेरा कोई जुड़ाव नहीं है। मुझे कीमत और कार्यक्षमता पसंद है, लेकिन मेरी इच्छा है कि वे DBeaver / Eclipse एप्लीकेशन को और खोलेंगे और DBeaver / Eclipse में एनालिटिक्स विजेट जोड़ना आसान कर देंगे, बजाय इसके कि यूजर्स को सीधे ग्राफ और चार्ट बनाने के लिए वार्षिक सदस्यता के लिए भुगतान करना पड़े। आवेदन पत्र। मेरे जावा कोडिंग कौशल जंग खाए हुए हैं और मुझे यह महसूस करने में हफ्तों का समय नहीं लगता कि ग्रहण विजेट्स का निर्माण कैसे करें, केवल यह जानने के लिए कि DBeaver ने DBeaver सामुदायिक संस्करण में तृतीय-पक्ष विजेट जोड़ने की क्षमता को अक्षम कर दिया है।

क्या DBeaver उपयोगकर्ताओं को DBeaver के सामुदायिक संस्करण में जोड़ने के लिए एनालिटिक्स विगेट्स बनाने के चरणों के रूप में अंतर्दृष्टि है?


-3
import json
cursor = conn.cursor()
qry = """ SELECT details FROM test_csvfile """ 
cursor.execute(qry)
rows = cursor.fetchall()

value = json.dumps(rows)

with open("/home/asha/Desktop/Income_output.json","w+") as f:
    f.write(value)
print 'Saved to File Successfully'

3
कृपया संपादित करें जो आपने उत्तर दिया, उसे कोड से बचने के लिए केवल जवाब दें
GGO

3
इस कोड स्निपेट के लिए धन्यवाद, जो कुछ सीमित अल्पकालिक सहायता प्रदान कर सकता है। एक उचित व्याख्या यह दर्शाती है कि यह समस्या का एक अच्छा समाधान क्यों है, यह दिखा कर इसके दीर्घकालिक मूल्य में बहुत सुधार होगा , और यह भविष्य के पाठकों को अन्य, समान प्रश्नों के साथ और अधिक उपयोगी बना देगा। कृपया अपने स्पष्टीकरण को संपादित करने के लिए कुछ स्पष्टीकरण जोड़ने के लिए, जिसमें आपके द्वारा की गई धारणाएँ शामिल हैं।
टोबी स्पाईट

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