gpt4 book ai didi

batch-file - PostgreSQL\lo_import 以及如何将生成的 OID 放入更新命令中?

转载 作者:行者123 更新时间:2023-11-29 11:29:03 26 4
gpt4 key购买 nike

我正在使用 Postgres 9.0,我有一个应用程序需要将图像插入远程 服务器。所以我使用:

 "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'";

在哪里

192.168.1.12是服务器系统的IP地址

5432 是端口号

myDB 是服务器数据库名

my_admin 是用户名

"\lo_import 'C://im/zzz4.jpg'" 是触发的查询。

Shell screenshot

将图像插入数据库后,我需要像这样更新表中的一行:

UPDATE species 
SET speciesimages=17755; -- OID from previous command.. how to get the OID ??
WHERE species='ACCOAA';

所以我的问题是:如何获取 psql 中 \lo_import 之后返回的 OID

我尝试在 Postgres 中运行 \lo_import 'C://im/zzz4.jpg' 但出现错误:

ERROR:  syntax error at or near ""\lo_import 'C://im/zzz4.jpg'""
LINE 1: "\lo_import 'C://im/zzz4.jpg'"

试过这个:

update species
set speciesimages=\lo_import 'C://im/zzz4.jpg'
where species='ACAAC04';

但是我得到这个错误:

ERROR:  syntax error at or near "\"
LINE 2: set speciesimages=\lo_import 'C://im/zzz4.jpg'
^

最佳答案

由于您的文件驻留在本地计算机上,并且您希望将 blob 导入远程服务器,因此您有两个选择:

1) 将文件传输到服务器并使用server-side function :

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

2) 使用psql meta-command就像你拥有它一样。

但是您不能将 psql 元命令与 SQL 命令混合使用,那是不可能的。
UPDATE 命令中使用 psql 变量 :LASTOID,该命令在同一 psql session 中 \lo_import meta 命令之后立即启动:

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

编写脚本(在 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
  • \\ 是分隔元命令。您需要在 "" 字符串中加倍 \,因为 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

关于batch-file - PostgreSQL\lo_import 以及如何将生成的 OID 放入更新命令中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9786014/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com