Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.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
Postgresql 在具有条件的两个数据库之间运行postgres查询_Postgresql_Postgresql 9.1_Dblink - Fatal编程技术网

Postgresql 在具有条件的两个数据库之间运行postgres查询

Postgresql 在具有条件的两个数据库之间运行postgres查询,postgresql,postgresql-9.1,dblink,Postgresql,Postgresql 9.1,Dblink,我在一台服务器上有两个postgres数据库 我需要从一个数据库中提取记录并将其放入另一个数据库中。这是我的工作查询 基本上,这会从dbESM的tblInvInfo中提取记录,并将它们放在dbESMTemp的相同表中 现在,根据要求。。。tblInvMaster包含发票的主要详细信息并包含日期,而tblInvInfo包含项目的详细信息 我只需要从tblInvInfo中提取符合tblInvMaster中特定条件的记录。我认为这是通过一个简单的内部连接查询完成的。这就是我所尝试的: insert i

我在一台服务器上有两个postgres数据库

我需要从一个数据库中提取记录并将其放入另一个数据库中。这是我的工作查询

基本上,这会从dbESM的tblInvInfo中提取记录,并将它们放在dbESMTemp的相同表中

现在,根据要求。。。tblInvMaster包含发票的主要详细信息并包含日期,而tblInvInfo包含项目的详细信息

我只需要从tblInvInfo中提取符合tblInvMaster中特定条件的记录。我认为这是通过一个简单的内部连接查询完成的。这就是我所尝试的:

insert into "tblInvInfo"
select "iiInvNum", "iiItemCode","iiUnitMeasure", 
"iiUnitQuantity", "iiPrice", "iiUnits" from 
 dblink ('dbname=dbESM', 'SELECT "iiInvNum", "iiItemCode",
 "iiUnitMeasure", "iiUnitQuantity", "iiPrice", "iiUnits" from 
 (select "tblInvInfo".* from (select * from "tblInvMaster" 
 where "invDate" between \'2014-08-01\' and \'2014-10-17\') invmaster 
 inner join "tblInvInfo" on "invInvNum" = "iiInvNum"  ) filteredinvinfo ')
    AS invinfo ("iiInvNum" varchar, "iiItemCode" varchar,
     "iiItemName" varchar, "iiUnitMeasure" varchar, 
     "iiUnitQuantity" numeric, "iiPrice" numeric, "iiUnits" numeric);
对于上述查询,我得到以下错误:

错误:2014第7行或附近的语法错误:where invDate 在“2014-08-01”和“2014-10-17”之间。。。 ^

我的加入是正确的,但我对查询有三个方面的疑问:

它是正确的吗,密码是以什么方式给出的? 查询中使用的反斜杠转义技术正确吗? 我不确定如何使用这个dblink函数指定要提取的列名。
非常感谢您为解决此问题提供的任何帮助。

如果您在dblink中使用另一个引号来转义引号,请参阅,您可能希望查看而不是dblink。我没有太多使用它们,但它们被认为是比dblink更现代的方法。谢谢John,但我认为我会坚持使用dblink,因为它简单,在我的案例中使用有限。
insert into "tblInvInfo"
select "iiInvNum", "iiItemCode","iiUnitMeasure", 
"iiUnitQuantity", "iiPrice", "iiUnits" from 
 dblink ('dbname=dbESM', 'SELECT "iiInvNum", "iiItemCode",
 "iiUnitMeasure", "iiUnitQuantity", "iiPrice", "iiUnits" from 
 (select "tblInvInfo".* from (select * from "tblInvMaster" 
 where "invDate" between \'2014-08-01\' and \'2014-10-17\') invmaster 
 inner join "tblInvInfo" on "invInvNum" = "iiInvNum"  ) filteredinvinfo ')
    AS invinfo ("iiInvNum" varchar, "iiItemCode" varchar,
     "iiItemName" varchar, "iiUnitMeasure" varchar, 
     "iiUnitQuantity" numeric, "iiPrice" numeric, "iiUnits" numeric);