dbplyr in_schema() 函数行为异常
Posted
技术标签:
【中文标题】dbplyr in_schema() 函数行为异常【英文标题】:dbplyr in_schema() function behaving strangely 【发布时间】:2018-04-22 20:11:59 【问题描述】:我正在使用 dbplyr
包中的 in_schema()
函数在来自 R 的 postgresql 数据库的命名模式中创建表。
这不是一段新代码,它曾经按预期工作 = 在模式“my_schema”中创建一个名为“my_table”的表。
con <- dbConnect(odbc::odbc(),
driver = "PostgreSQL Unicode",
server = "server",
port = 5432,
uid = "user name",
password = "password",
database = "dbase")
dbWriteTable(con,
in_schema('my_schema', 'my_table'),
value = whatever) # assume that 'whatever' is a data frame...
这段代码现在出现了问题,意外开始在我的数据库的默认公共方案中创建一个名为“my_scheme.my_table”的表,而不是预期的 my_schema.my_table。
有没有其他人注意到这种行为,是否有解决方案(除了使用默认的 postgresql 方案,这在我的情况下不实用)?
【问题讨论】:
您可以尝试专门针对 RPostgresql 的向量语法:***.com/a/12001451 或者您可以尝试 DBI::Id(schema="my_schema", name="my_table")。 【参考方案1】:为此,我建议使用copy_to()
而不是dbWriteTable()
:copy_to(con, iris, in_schema("production", "iris"))
【讨论】:
谢谢,但这不起作用:copy_to()
创建一个 temporary 表 - Postgres 中的临时表不能在标准模式中使用(它们有自己的,特殊方案)。您的代码将转换为 create temporary table production.iris (...)
,这不是合法的 Postgres 代码。以上是关于dbplyr in_schema() 函数行为异常的主要内容,如果未能解决你的问题,请参考以下文章