我正在处理使用delphi 7
作为前端而postgres 9.0
作为后端的应用程序。
我必须将图像上传到服务器,因此我使用\lo_import
和\lo_export
在服务器上插入图像并从服务器获取图像。
我遇到了LASTOID
之后需要\lo_import
的问题所以我可以使用OID来更新表格中的行但是我无法在Windows中设置正确的语法
UPDATE fishes
SET fishesimages=17755; -- <--last OID
WHERE fishes='0A';
以下是关于stackoverflow.com的问题。我得到了答案,但脚本是一个Linux shell脚本。我无法在Windows中运行它
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 fishesimages = :LASTOID
WHERE fishes = '04';
EOF
和
echo "\lo_import '/path/to/my/file/zzz4.jpg' \\\\ UPDATE species SET fishesimages = :LASTOID WHERE fishes = '04';" | \
psql -h 192.168.1.12 -p 5432 -d myDB -U my_admin
我在Windows中试过这个
"C:\Program Files\PostgreSQL\9.0\bin\psql.exe" -h 192.168.1.12 -p 5432 -d myDB -U my_admin -c "\lo_import 'C://im/zzz4.jpg'";
然后立即(以编程方式)我正在做
"C:\Program Files\PostgreSQL\9.0\bin\psql.exe" -h 192.168.1.12 -p 5432 -d myDB-U myDB_admin -c " update species SET fishesimages = :LASTOID WHERE fishes='24'"
但我得到Syntax error at or near ":"
任何人都可以告诉我如何将其转换为Windows commnad吗?
答案 0 :(得分:2)
将命令放在一个文件中(比如import.psql)
-- contents of import.psql
\lo_import '/path/to/my/file/zzz4.jpg'
UPDATE species
SET speciesimages = :LASTOID
WHERE species = 'ACAAC04';
比发出命令
"C:\Program Files\PostgreSQL\9.0\bin\psql.exe" -h 192.168.1.12 -p 5432 -d myDB -U my_admin -f import.psql