PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

PostgreSQL \lo_import и как да получите получения OID в команда UPDATE?

Тъй като вашият файл се намира на вашата локална машина и искате да импортирате blob обекта на отдалечен сървър, имате две възможности:

1) Прехвърлете файла на сървъра и използвайте функцията от страна на сървъра :

UPDATE species
SET    speciesimages = lo_import('/path/to/server-local/file/zzz4.jpg')
WHERE  species = 'ACAAC04';

2) Използвайте psql meta- команда сякаш го имаш.

Но не можете да смесвате psql мета команди с SQL-команди, това е невъзможно.
Използвайте psql променливата :LASTOID в UPDATE команда, която стартирате веднага след \lo_import мета команда в същата psql сесия:

UPDATE species
SET    speciesimages = :LASTOID
WHERE  species = 'ACAAC04';

За да напиша това (работи в Linux, не съм запознат със скриптовете на обвивката на 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
  • \\ е разделителната мета-команда. Трябва да удвоите \ , в "" низ, защото обвивката интерпретира един слой.
  • \ преди новият ред е просто продължението на реда в обвивките на Linux.

Алтернативен синтаксис (отново тестван на 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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да имате пълна офлайн функционалност в уеб приложение с база данни PostgreSQL?

  2. Защо нов потребител в PostgreSQL може да се свързва с всички бази данни?

  3. Демонстрирайте SQL инжектиране в PL/pgSQL

  4. Размер на таблицата с оформление на страницата

  5. Как ефективно да избера предишната ненулева стойност?