Sql 使用dblink从一个postgres数据库连接到另一个数据库的Shell脚本
错误:函数dblink\u connect\u(文本,文本)不存在 第3行:从dblink\u connect\u(cast)(varchar'dbname=test\u db。。。 ^ 提示:没有与给定名称和参数类型匹配的函数。您可能需要添加显式类型转换 亲爱的各位 我在使用dblink执行shell脚本以从一个数据库连接到不同服务器中的另一个数据库时出错。上面显示了我遇到的错误。顺便说一下,我已检查了linux服务器中的共享目录,我有以下功能: /usr/share/postgresql/8.4/contrib/dblink.sql 然而,为什么我仍然碰到上面的错误 下面是我的shell脚本代码:Sql 使用dblink从一个postgres数据库连接到另一个数据库的Shell脚本,sql,postgresql,shell,Sql,Postgresql,Shell,错误:函数dblink\u connect\u(文本,文本)不存在 第3行:从dblink\u connect\u(cast)(varchar'dbname=test\u db。。。 ^ 提示:没有与给定名称和参数类型匹配的函数。您可能需要添加显式类型转换 亲爱的各位 我在使用dblink执行shell脚本以从一个数据库连接到不同服务器中的另一个数据库时出错。上面显示了我遇到的错误。顺便说一下,我已检查了linux服务器中的共享目录,我有以下功能: /usr/share/postgresql/8
echo "Start insert records..."
psql cr032 <<THE_END
select t1.*
into test_table
from dblink_connect_u(cast(varchar 'dbname=TEST_DB port=5432 host=10.0.0.10 user=test password=123456' as text),
cast(varchar 'select applicationid, appname, appversion, apppath, appdatetime, description, systemtype from test_table' as text))
as t1(applicationid varchar(36), appname varchar(100), appversion varchar(20), apppath varchar(200), appdatetime timestamp, description text, systemtype smallint);
THE_END
echo "End insert records!"
echo“开始插入记录…”
psqlcr032当您省略cast varchar…作为文本时会发生什么?
也可以按照下面的思路思考,使用dblink\u connect\u建立连接,然后使用dblink执行查询
Select dblink_connect_u( 'connection1',
'dbname=TEST_DB port=5432 host=10.0.0.10
user=test password=123456')
select t1.*
into test_table
from dblink('connection1',
'select applicationid, appname, appversion, apppath,
appdatetime, description, systemtype from test_table' )
as t1(applicationid varchar(36), appname varchar(100),
appversion varchar(20), apppath varchar(200),
appdatetime timestamp, description text, systemtype smallint);
我找到了错误的根本原因,这是因为我在安装后没有将dblink.sql加载到我的postgres数据库中。
下面是将dblink.sql加载到postgres的命令,请在postgres/bin文件夹下执行该命令:
psql-d“数据库名称”<“数据库链接位置”/dblink.sql您似乎遗漏了一些代码。调用db_connect__的线路实际上是什么样子的?啊,没关系,看起来您隐藏代码时遇到了格式问题。我已经解决了。等待批准Hi Neil Neyman,感谢您的回复并提供了建议解决方案。不过,我已经按照您的建议更改了代码,我在测试后仍然收到相同的错误。嗨,Neil Neyman,我找到了错误的根本原因,这是因为我在安装后没有将dblink.sql加载到我的postgres数据库中。下面是将dblink.sql加载到postgres的命令,执行postgres/bin文件夹下的命令:psql-d“database\u name”<“dblink\u location”/dblink.SQLLINK很高兴您解决了这个问题。您应该添加这个解决方案作为您自己问题的答案,因为它可能会帮助其他人。