【问题标题】:How to combine two different tables from SQLite and PostgreSQL?如何组合来自 SQLite 和 PostgreSQL 的两个不同的表?
【发布时间】:2019-07-02 07:38:42
【问题描述】:

我在 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

【问题讨论】:

    标签: java postgresql sqlite


    【解决方案1】:

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

    您必须在自己的代码中自己执行两个查询并将它们合并在一起。

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

    【讨论】:

      【解决方案2】:

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

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

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

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


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

      【讨论】:

      • 是否可以创建从 postrges 到 sqlite 的 db-link? postgresql.org/docs/11/contrib-dblink-connect.html
      • @Chris:不,DbLink 仅用于连接到其他 Postgres 服务器
      • 谢谢。我就是这么想的,我既不熟悉 postgres 也不熟悉 sqlite
      【解决方案3】:

      我认为你应该创建一个视图来使用这样的查询来组合两个表:

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

      之后就可以查询视图了

      【讨论】:

      • 查看两个不同数据库中的表?
      • 为什么不呢?有可能做到这一点
      • 问题是关于 Postgres 和 SQLite,而不是关于 Microsoft SQL Server。
      猜你喜欢
      • 1970-01-01
      • 2021-12-15
      • 1970-01-01
      • 1970-01-01
      • 2022-11-14
      • 2020-10-12
      • 1970-01-01
      • 2012-02-18
      • 1970-01-01
      相关资源
      最近更新 更多