चूंकि आपकी फ़ाइल आपकी स्थानीय मशीन पर रहती है और आप ब्लॉब को किसी दूरस्थ सर्वर पर आयात करना चाहते हैं, आपके पास दो विकल्प हैं:
1) फ़ाइल को सर्वर में स्थानांतरित करें और सर्वर-साइड फ़ंक्शन का उपयोग करें :
UPDATE species
SET speciesimages = lo_import('/path/to/server-local/file/zzz4.jpg')
WHERE species = 'ACAAC04';
2) psql मेटा का उपयोग करें- आदेश जैसे आपके पास है।
लेकिन आप psql मेटा कमांड को SQL-कमांड के साथ नहीं मिला सकते हैं, यह असंभव है।
psql वेरिएबल :LASTOID
का उपयोग करें एक UPDATE
. में कमांड जिसे आप \lo_import
. के तुरंत बाद लॉन्च करते हैं उसी psql सत्र में मेटा कमांड:
UPDATE species
SET speciesimages = :LASTOID
WHERE species = 'ACAAC04';
उस स्क्रिप्ट के लिए (लिनक्स में काम करता है, मैं विंडोज शेल स्क्रिप्टिंग से परिचित नहीं हूं):
echo "\lo_import '/path/to/my/file/zzz4.jpg' \\\\ UPDATE species SET speciesimages = :LASTOID WHERE species = 'ACAAC04';" | \
psql -h 192.168.1.12 -p 5432 -d myDB -U my_admin
\\
विभाजक मेटा-कमांड है। आपको\
. को दोगुना करना होगा , एक""
. में स्ट्रिंग, क्योंकि शेल एक परत की व्याख्या करता है।\
नई लाइन से पहले लिनक्स शेल्स में सिर्फ लाइन निरंतरता है।
वैकल्पिक सिंटैक्स (लिनक्स पर फिर से परीक्षण किया गया):
psql -h 192.168.1.12 -p 5432 -d myDB -U my_admin << EOF
\lo_import '/path/to/my/file/zzz4.jpg'
UPDATE species
SET speciesimages = :LASTOID
WHERE species = 'ACAAC04';
EOF