sql-server - Go语言: JOIN sql with two different connections/databases

标签 sql-server postgresql go

我使用 Go 语言。我有两个不同的数据库服务器:

  1. Postgresql
  2. MS SQL。

对于他们两个,我分别建立了一个连接:

db1, err := sql.Open("postgres", psqlconn)
db2, err := sql.Open("sqlserver", u.String())

连接工作正常。

现在我想连接第一个数据库和第二个数据库的数据:使用 JOIN。 示例:

rows, err := db1.Query('select *
    from db1.dbname1.tabel
    left join db2.dbname2.tabel on db2.dbname2.tabel.id = db1.dbname1.tabel.id;')

但这不起作用:(我怎样才能将两个表连接在一起?我什么也没得到。或者还有其他方法可以做到这一点吗?

感谢您的支持!! 马蒂亚斯

最佳答案

像 gorm 这样的 ORM 基本上是一个对象关系层,它提供了一些 API,可以将语言级实体转换为 SQL 查询,反之亦然。他们基本上将您的查询转换为单个 SQL 查询,现在您的 postgresql 数据库收到一个查询,该查询是表 a (恰好存在)和另一个表 b 的联接这是在另一个数据库中!连接是在数据库级别完成的,而不是 ORM 级别。所以你无法实现这一点。

您能做的最好的事情就是执行两个单独的查询,然后将它们连接到您的应用程序层或其他层中。

关于sql-server - Go语言: JOIN sql with two different connections/databases,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73124758/

相关文章:

PHP/PDO 错误 : SQLSTATE[HY000] Unable to connect: Adaptive Server is unavailable or does not exist (severity 9)

sql-server - 查找 2 个 SQL Server 表之间的重复项并返回另一个表中的两个值并更新为重复项

sql - 使用 ON CONFLICT 从 INSERT 返回行而不需要更新

go - 为什么 Go 无法正确读取请求?

string - 在 Golang 中按长度拆分字符串

sql - 我如何设置一个sql server用户以只读模式执行存储过程

sql-server - 如何在 T-SQL 中动态使用表类型

javascript - 尝试在 Node.js 中创建 Postgres DB 时出错

Postgresql 使用时区 UTC 创建表字段名时间戳

go - 停止 go mod 工具解析某些目录