我有一个 postgresql 数据库连接,想要从数据库获取一个表。也许将连接信息保存在不同的文件中是一个好习惯? 我刚才有两个文件:
#getthetable.R
library(tidyverse)
library(dbplyr)
## connect to db
con <- src_postgres(dbname = "thedbname",
host = "blablabla.amazonaws.com",
port = NULL,
user = "myname",
password = "1234")
thetable <- tbl(con, "thetable") %>% select(id, apples, carrots) %>% collect
然后:
#main.R
library(tidyverse)
## get data from getthetable script with connection
source("rscripts/getthetable.R")
现在,con
和 thetable
变量都可以在 main.R 中使用。我只想要 getthetable.R 中的变量 thetable
。我怎么做?忽略 con 变量?
此外,在 r 中使用数据库连接时是否有最佳实践?我的想法符合逻辑吗?我正在做的事情有缺点吗?或者大多数人只是将连接与主脚本放在一起?
最佳答案
我也喜欢在不同的文件中捕获此类内容(例如连接),但也在指定的环境中,如下所示:
ConnectionManager <- local({
con <- src_postgres(dbname = "thedbname",
host = "blablabla.amazonaws.com",
port = NULL,
user = "myname",
password = "1234")
collectTable <- function() {
tbl(con, "thetable") %>% select(id, apples, carrots) %>% collect
}
list(collectTable = collectTable)
})
这样,在获取文件后,您只有一个对象 ConnectionManager
,并且可以使用 ConnectionManager$collectTable()
获取表。此外,您可以轻松扩展它以获取其他表或包含一些连接实用程序函数。
关于r - 仅从脚本中获取单个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45048341/