Karena file Anda berada di mesin lokal dan Anda ingin mengimpor blob ke server jauh, Anda memiliki dua opsi:
1) Transfer file ke server dan gunakan fungsi sisi server :
UPDATE species
SET speciesimages = lo_import('/path/to/server-local/file/zzz4.jpg')
WHERE species = 'ACAAC04';
2) Gunakan psql meta- perintah seperti Anda memilikinya.
Tetapi Anda tidak dapat mencampur perintah meta psql dengan perintah SQL, itu tidak mungkin.
Gunakan variabel psql :LASTOID
dalam UPDATE
perintah yang Anda luncurkan segera setelah \lo_import
perintah meta dalam sesi psql yang sama:
UPDATE species
SET speciesimages = :LASTOID
WHERE species = 'ACAAC04';
Untuk skrip yang (berfungsi di Linux, saya tidak terbiasa dengan skrip shell Windows):
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
\\
adalah meta-perintah pemisah. Anda perlu menggandakan\
, dalam""
string, karena shell menafsirkan satu lapisan.\
sebelum baris baru hanyalah kelanjutan baris di shell Linux.
Sintaks alternatif (diuji lagi di Linux):
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