【发布时间】:2020-03-09 16:58:28
【问题描述】:
我有一个使用 DBI::dbConnect 连接的 Netezza SQL 服务器。服务器有多个数据库,我们将命名为 db1 和 db2。
我想尽可能多地使用 dbplyr,而不必在 RODBC::sqlQuery() 中编写 SQL 代码,但我不确定如何执行以下操作:。
1) 如何读取 db1 中的表,对其进行处理并让服务器将结果写入 db2 中的表中,而无需通过我的桌面?
2) 如何在 db1 中的一个表和 db2 中的另一个表之间进行左连接?
看起来可能有一种方法可以连接到数据库 ="SYSTEM" 而不是数据库="db1" 或 "db2",但我不确定下一步是什么。
con <- dbConnect(odbc::odbc(),
driver = "NetezzaSQL",
database = "SYSTEM",
uid = Sys.getenv("netezza_username"),
pwd = Sys.getenv("netezza_password"),
server = "NETEZZA_SERVER",
port = 5480)
【问题讨论】:
-
(1) 您通常可以同时跟踪多个单独的连接,就像在
con1 <- DBI::dbConnect(...); con2 <- DBI::dbConnect(...)中一样,不过由您来管理要使用的连接。一些 DBMS 允许您通过 SQL 本身更改数据库,但许多不允许(例如 mssql)。 (2) 从两个不同的数据库加入 in database 的唯一方法是,如果其中至少一个支持外部数据包装器和/或外部表,并且与 R 无关(并且非常不平凡)。缺少它,将两者都下载到 R 中,然后加入......可能不是你想要/需要的。 -
感谢 r2evans。我知道如何创建两个连接,从一个读取到我的桌面,在我的桌面上工作并写入另一个,但我真的希望有一些不需要通过我的桌面的东西 - 谢谢你警告我这不是琐碎的 ! :)
-
我认为您需要先在数据库上建立一个数据库链接。然后它只是与其中一个数据库和一些 SQL 的连接。 oracletutorial.com/oracle-administration/…