आसानी से मैंने सिर्फ एक उदाहरण लिखा है कि इसे सादा पाठ फ़ाइलों के साथ कैसे किया जाए जो xml
पर समान रूप से लागू होंगे फ़ाइलें। प्रश्न देखें txt फ़ाइल पर आधारित तालिका पंक्तियों को अपडेट करना
।
यह पता चला है कि आप इसे psql
. के साथ कर सकते हैं :
regress=> CREATE TABLE xmldemo(id serial primary key, blah xml);
regress=> \set test = `cat some.xml`
regress=> INSERT INTO xmldemo(blah) VALUES (:'test');
INSERT 0 1
यदि आप बहुत कुछ कर रहे हैं तो आप ड्राइव psql
सह-प्रक्रिया का उपयोग करना
या कम से कम SQL उत्पन्न करने और इसे psql
. में पाइप करने के लिए का स्टडिन है, इसलिए आपको वह सब कनेक्शन सेटअप/टियरडाउन बार-बार करने की आवश्यकता नहीं है।
वैकल्पिक रूप से, इसे शेल के साथ करना:
#!/bin/bash
xmlfilename=$1
sep=$(printf '%04x%04x\n' $RANDOM $RANDOM)
psql <<__END__
INSERT INTO mytable(myxmlcolumn) VALUES (
\$x${sep}\$$(cat ${xmlfilename})\$x${sep}\$
);
__END__
रैंडम सेपरेटर पीढ़ी (असंभावित) इंजेक्शन हमलों से बचाने के लिए है जो डॉलर के उद्धरण विभाजक टैग को जानने या अनुमान लगाने पर निर्भर करते हैं।
आप बहुत होने जा रहे हैं यदि आप DBI
के साथ पर्ल जैसी उचित स्क्रिप्टिंग भाषा और PostgreSQL क्लाइंट लाइब्रेरी का उपयोग करते हैं, तो आप अधिक स्वस्थ और खुश रहेंगे। और DBD::Pg
, पायथन के साथ psycopg2
या रूबी के साथ Pg
किसी भी तुच्छ कार्य के लिए रत्न। शेल में डेटाबेस के साथ महत्वपूर्ण काम करने से दर्द, पीड़ा और सह-प्रक्रियाओं का अत्यधिक उपयोग होता है।