Poiché il tuo file risiede sul tuo computer locale e desideri importare il BLOB su un server remoto, hai due opzioni:
1) Trasferisci il file sul server e usa la funzione lato server :
UPDATE species
SET speciesimages = lo_import('/path/to/server-local/file/zzz4.jpg')
WHERE species = 'ACAAC04';
2) Utilizzare il psql meta- comando come ce l'hai tu.
Ma non puoi mischiare i meta comandi psql con i comandi SQL, questo è impossibile.
Usa la variabile psql :LASTOID
in un UPDATE
comando che avvii subito dopo il \lo_import
meta comando nella stessa sessione psql:
UPDATE species
SET speciesimages = :LASTOID
WHERE species = 'ACAAC04';
Per eseguire lo script (funziona in Linux, non ho familiarità con lo scripting della shell di 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
\\
è il metacomando separatore. Devi raddoppiare il\
, in un""
string, perché la shell interpreta un livello.\
prima che la nuova riga sia solo la continuazione della riga nelle shell di Linux.
Sintassi alternativa (testata di nuovo su 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