gpt4 book ai didi

sql - 一起使用 sqldf 和 RPostgreSQL

转载 作者:行者123 更新时间:2023-11-29 11:12:10 25 4
gpt4 key购买 nike

当使用 RPostgreSQL 时,我发现我不能以同样的方式使用 sqldf。例如,如果我使用以下代码加载库并将数据读入数据框:

library(RPostgreSQL)
drv <- dbDriver("PostgreSQL")
con <- dbConnect(drv, host="localhost", user="postgres", password="xxx", dbname="yyy", port="5436")
rs <- dbSendQuery(con, "select * from table");
df<- fetch(rs, n = -1); dbClearResult(rs)
dbDisconnect(con)

我知道数据框 df 中有此表的内容。但是,如果我想使用 sqldf 运行 SQL 命令,我以前会这样做:

sqldf("SELECT * FROM df WHERE X > 10")

这不再有效,因为我收到错误消息:

Error in postgresqlNewConnection(drv, ...) : 
RS-DBI driver: (could not connect postgres@localhost on dbname "test"
)
Error in !dbPreExists : invalid argument type

我认为这是我的操作错误,但我不知道如何向 sqldf 提供什么参数,以便它只关注数据框而不尝试连接任何东西否则。

最佳答案

在 RPostgreSQL 中使用 sqldf

sqldf 如果发现 RPostgreSQL 已加载,将自动使用 PostgreSQL 中的 test 数据库。所以你可以在 PostgreSQL 中创建一个 test 数据库,然后使用 sqldf

或者,您可以指定不同数据库的名称。

参见:sqldf FAQ 12

将 sqldf 与 RSQLite 结合使用

如果你想将 sqldf 与 RSQLite 一起使用而不是与 RPostgreSQL 一起使用,你可以使用 sqldfdrv 参数来强制它使用非默认驱动程序。例如

sqldf("select foo from bar...",drv="SQLite")

或者,您可以使用 "sqldf.driver" 选项全局设置驱动程序。从 R 内部:

options(sqldf.driver = "SQLite")

或者,如果您希望使用 RSQLite,另一种可能性是在使用 sqldf 之前分离 RPostgreSQL,然后再次加载它。

有关详细信息,请参阅 ?sqldf

关于sql - 一起使用 sqldf 和 RPostgreSQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10237113/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com