Pre*_*ias 5 postgresql cmd batch-file
我正在使用Postgres 9.0,并且有一个需要在其中将图像插入远程的应用程序server
。所以我用:
"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'";
Run Code Online (Sandbox Code Playgroud)
哪里
192.168.1.12
是服务器系统的IP地址
5432
是端口号
myDB
是服务器数据库名称
my_admin
是用户名
"\lo_import 'C://im/zzz4.jpg'"
是触发的查询。
将图像插入数据库后,我需要像这样更新表中的一行:
UPDATE species
SET speciesimages=17755; -- OID from previous command.. how to get the OID ??
WHERE species='ACCOAA';
Run Code Online (Sandbox Code Playgroud)
所以我的问题是:如何在psql中得到OID
返回值\lo_import
?
我尝试\lo_import 'C://im/zzz4.jpg'
在Postgres中运行,但出现错误:
ERROR: syntax error at or near ""\lo_import 'C://im/zzz4.jpg'""
LINE 1: "\lo_import 'C://im/zzz4.jpg'"
Run Code Online (Sandbox Code Playgroud)
我也试过这个:
update species
set speciesimages=\lo_import 'C://im/zzz4.jpg'
where species='ACAAC04';
Run Code Online (Sandbox Code Playgroud)
但是我得到这个错误:
ERROR: syntax error at or near "\"
LINE 2: set speciesimages=\lo_import 'C://im/zzz4.jpg'
^
Run Code Online (Sandbox Code Playgroud)
由于您的文件驻留在本地计算机上,并且您希望将 blob 导入远程服务器,因此您有两个选择:
1) 将文件传输到服务器并使用服务器端功能:
UPDATE species
SET speciesimages = lo_import('/path/to/server-local/file/zzz4.jpg')
WHERE species = 'ACAAC04';
Run Code Online (Sandbox Code Playgroud)
2)像你一样使用psql 元命令。
但是您不能将 psql 元命令与 SQL 命令混合使用,这是不可能的。在同一个 psql 会话中的meta 命令之后立即启动 的命令中
使用 psql 变量::LASTOID
UPDATE
\lo_import
UPDATE species
SET speciesimages = :LASTOID
WHERE species = 'ACAAC04';
Run Code Online (Sandbox Code Playgroud)
编写脚本(适用于 Linux,我不熟悉 Windows shell 脚本):
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
Run Code Online (Sandbox Code Playgroud)
\\
是分隔符元命令。你需要加倍的\
,在一个""
字符串,因为shell解释一层。\
在换行符之前只是 Linux shell 中的行延续。替代语法(再次在 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
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5463 次 |
最近记录: |