Vì tệp của bạn nằm trên máy cục bộ và bạn muốn nhập blob vào máy chủ từ xa, bạn có hai tùy chọn:
1) Chuyển tệp đến máy chủ và sử dụng chức năng phía máy chủ :
UPDATE species
SET speciesimages = lo_import('/path/to/server-local/file/zzz4.jpg')
WHERE species = 'ACAAC04';
2) Sử dụng psql meta- lệnh như bạn có nó.
Nhưng bạn không thể kết hợp các lệnh meta psql với các lệnh SQL, điều đó là không thể.
Sử dụng biến psql :LASTOID
trong một UPDATE
lệnh mà bạn khởi chạy ngay sau \lo_import
lệnh meta trong cùng một phiên psql:
UPDATE species
SET speciesimages = :LASTOID
WHERE species = 'ACAAC04';
Để tập lệnh đó (hoạt động trong Linux, tôi không quen với tập lệnh trình bao 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
-
\\
là siêu lệnh phân tách. Bạn cần nhân đôi\
, trong một""
chuỗi, bởi vì shell diễn giải một lớp. -
\
trước dòng mới chỉ là phần tiếp theo của dòng trong Linux shell.
Cú pháp thay thế (đã thử nghiệm lại trên 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