djq*_*djq 14 sql postgresql r sqldf rpostgresql
使用时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)
Run Code Online (Sandbox Code Playgroud)
我知道在数据帧中有这个表的内容df.但是,如果我想使用sqldf我以前执行的命令运行SQL命令:
sqldf("SELECT * FROM df WHERE X > 10")
Run Code Online (Sandbox Code Playgroud)
这不再有效,因为我收到错误消息:
Error in postgresqlNewConnection(drv, ...) :
RS-DBI driver: (could not connect postgres@localhost on dbname "test"
)
Error in !dbPreExists : invalid argument type
Run Code Online (Sandbox Code Playgroud)
我认为这是我操作员的错误,但我无法确定如何提供哪些参数,sqldf以便它只关注数据框并且不会尝试连接到其他任何东西.
G. *_*eck 20
使用sqldf和RPostgreSQL
sqldftest如果它看到加载了RPostgreSQL,它将自动使用PostgreSQL中的数据库.所以你可以test在PostgreSQL中创建一个数据库,然后使用sqldf
或者,您可以指定其他数据库的名称.
请参阅:sqldf FAQ 12
使用sqldf和RSQLite
如果你想将sqldf与RSQLite而不是RPostgreSQL一起使用,你可以使用sqldf's drv参数强制它使用非默认驱动程序.例如
sqldf("select foo from bar...",drv="SQLite")
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用该"sqldf.driver"选项全局设置驱动程序.从R内:
options(sqldf.driver = "SQLite")
Run Code Online (Sandbox Code Playgroud)
或者,如果您希望使用RSQLite,则另一种可能性是detach在使用sqldf之前使用RPostgreSQL并在之后再次加载它.
详情?sqldf请见.
我有同样的错误,我分离了RPostgeSQL包,重新运行我的sqldf代码,它工作正常 r detach("package:RPostgreSQL", unload=TRUE)
| 归档时间: |
|
| 查看次数: |
10036 次 |
| 最近记录: |