PostgreSQL中的跨数据库查询

时间:2014-05-21 17:13:54

标签: sql postgresql cross-database

我正在尝试在Postgres中构建一个查询。我的背景是在SQL Server中,所以我有一些语法上的挑战。我的查询需要在两个单独的服务器上打两个单独的数据库。我需要在数据集之间进行连接。基本上,我在db1中有一个用户登录活动的表。每次用户登录网站时都会添加一个条目。在db2上,我有一个购买表。对于每一天,我需要看到:登录了多少人以及登录的用户中有多少人进行了购买。

我的表格如下:

Logins                Purchases
---------             ---------
ID                    User_ID
User_ID               Amount
LoginDate 

如果我的购买表上有日期字段,这将很容易。但事实并非如此。所以,目前,我正在尝试以下方法:

SELECT 
  // Somehow get the number of logins for the given day here
  // Somehow I need to get the number of purchases for the given day here      
  TO_CHAR(TO_TIMESTAMP((LoginDate/1000) - 14400), 'MM/DD/YYYY') AS the_day
FROM 
  db1.Logins AS t1,
  db2.Purchases as t2
GROUP BY the_day
ORDER BY the_day;

如何在Postgres中获取每天的登录和购买次数?谢谢!

1 个答案:

答案 0 :(得分:6)

PostgreSQL不支持跨数据库查询。大多数想要“跨数据库”查询的人使用其中包含多个架构的单个数据库。我不确定MS-SQL,但MySQL的“数据库”更像是PostgreSQL“schema”。

如果您需要跨数据库查询,则必须使用DBLink或postgres-fdw。或者你可以复制数据 - 看看Londiste,Slony-I或简单的cronjob。