【发布时间】:2017-07-12 04:16:47
【问题描述】:
我有一个 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 中使用 db 连接时,这里有最佳实践吗?我的想法合乎逻辑吗?我正在做的事情是否有缺点,或者大多数人只是将连接与主要脚本放在一起?
【问题讨论】:
-
R 中的对象属于 environments 而不是文件。如果您从同一个环境中获取两个文件,则其中定义的每个对象都属于该环境(除非您明确地将对象放在其他环境中)。您可以使用
rm删除任何对象(以及您的con对象)或在函数中定义con。 -
感谢@nicola 的回复。我的方法对你有意义吗?将连接与脚本中的数据分开是否合乎逻辑,还是我过度担心?另外,我不确定如何处理您的反馈...您是说我应该在连接详细信息脚本中使用 rm() 吗?这会删除我想要的 tbl
thetable吗?这里的传统方法是什么?
标签: r rpostgresql dbplyr