Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 使用dblink从一个postgres数据库连接到另一个数据库的Shell脚本_Sql_Postgresql_Shell - Fatal编程技术网

Sql 使用dblink从一个postgres数据库连接到另一个数据库的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

错误:函数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脚本代码:

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很高兴您解决了这个问题。您应该添加这个解决方案作为您自己问题的答案,因为它可能会帮助其他人。