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