如何合并来自SQLite和PostgreSQL的两个不同的表?

时间:2019-07-02 07:38:42

标签: java postgresql sqlite

我在合并来自JAVA中不同数据库查询的两个表时遇到问题。 我有2个表A和B。A属于SQLite DB,B属于Postgres DB。

有没有一种方法可以合并这两个表并获取输出。

我尝试通过内部联接查询联接这些表,但对我不起作用。

表A属于sqlite DB

  appid |  charid
  ------+--------
  2142  |      2
  2142  |      4
  2142  |      7

表B属于Postgres DB

charid  |          charname
--------+----------------------------
      1 | Bandwidth
      2 | Prone to misuse
      3 | Transfer files
      4 | Tunnels apps

我必须显示如下输出:

  appid |          charname
--------+----------------------------
   2142 | Excessive Bandwidth
   2142 | Prone to misuse
   2145 | Transfer files
   2146 | Tunnels other apps

3 个答案:

答案 0 :(得分:1)

您不能在单个查询中跨JDBC驱动程序访问多个数据库。

您必须执行两个查询,然后使用自己的代码将它们合并在一起。

如果这是一个长期解决方案,请考虑跨数据库复制静态表。甚至可以整合到单个数据库中。

答案 1 :(得分:1)

如果表不是太大,最简单的解决方案可能是在Java代码中进行联接。

如果可以将SQLite数据库放在Postgres服务器上,则可以尝试安装SQLite foreign data wrapper并创建一个foreign table,以使SQLite表可从Postgres内部使用。

再次:这要求SQLite数据库文件可以移动到Postgres服务器的文件系统中。

然后,您可以在针对Postgres服务器的单个查询中联接两个表。


但是从长远来看,也许将所有内容都放在一个数据库(例如Postgres)中是更好的解决方案。

答案 2 :(得分:-2)

我认为您应该使用这样的查询来创建视图以合并两个表:

`CREATE VIEW [dbo].[YourView]
 as
 select 
 a.charId, 
 a.SomeInfo, 
 b.SomeOtherInfo
 from TableInA a
join DatabaseB.dbo.TableInB b ..`

之后,您可以查询视图