我使用dplyr (0.7.0)
,dbplyr (1.0.0)
,DBI 0.6-1
和odbc (1.0.1.9000)
。我想這樣做如下:如何使用R和dplyr從不同的SQL數據庫連接表?
db1 <- DBI::dbConnect(
odbc::odbc(),
Driver = "SQL Server",
Server = "MyServer",
Database = "DB1"
)
db2 <- DBI::dbConnect(
odbc::odbc(),
Driver = "SQL Server",
Server = "MyServer",
Database = "DB2"
)
x <- tbl(db1, "Table1") %>%
dplyr::left_join(tbl(db2, "Table2"), by = "JoinColumn")
,但我不斷收到這並沒有真正似乎有任何物質它是一個錯誤。當我使用show_query
時,似乎代碼嘗試創建一個連接兩個表而不考慮單獨數據庫的SQL查詢。每對dplyr::left_join
的文件我也試過:
x <- tbl(db1, "Table1") %>%
dplyr::left_join(tbl(db2, "Table2"), by = "JoinColumn", copy = TRUE)
但有輸出或錯誤信息沒有變化。在同一臺服務器上是否有不同的方式來連接不同數據庫中的表?
您可以使用'dbplyr :: collect()'強制/從每個數據庫提取數據,然後在本地R實例中進行加入。這表明你應該在'collect()'調用之前進行過濾和基本選擇,以避免過度拉取數據。 – r2evans
我的備份計劃是拉入兩組數據,然後在R中進行本地連接。問題是,有時數據集非常大,我想在使用一個單獨的數據庫中的列時過濾結果,然後再拉入數據在本地。 –
坦率地說,像這樣進行多DBMS連接/過濾在任何語言中都很難(除了使用外鍵的本地SQL等)。如果您提供來自每個表格的代表性樣本數據(即代表最小但足夠的可變性),我們可能會提供幫助,但我認爲您將被卡住從至少一個DBMS拉取大量數據。 – r2evans