我正在使用RPostgreSQL
包通过 R 访问我的 PostgreSQL 数据库(9.3)。我有一些非常长且很大的 sql 查询(几个 MB 大。从 raster2pgsql 生成)。
如何在 R 中将 sql 查询文件作为语句发送/执行?
正常的方式
\i query.sql
似乎无法通过dbSendQuery
. 我试图通过 读取整个 sql 文件作为字符向量readLines
,但这也失败了,因为 dbSendQuery 显然只支持单个命令?
我正在使用RPostgreSQL
包通过 R 访问我的 PostgreSQL 数据库(9.3)。我有一些非常长且很大的 sql 查询(几个 MB 大。从 raster2pgsql 生成)。
如何在 R 中将 sql 查询文件作为语句发送/执行?
正常的方式
\i query.sql
似乎无法通过dbSendQuery
. 我试图通过 读取整个 sql 文件作为字符向量readLines
,但这也失败了,因为 dbSendQuery 显然只支持单个命令?
dbSendQuery
ordbGetQuery
仅用于“SQL”部分,而不是 psql 命令,例如\i
.
在您的情况下,最简单的方法确实是使用readLines
,然后再dbGetQuery
进行sapply
调用。
con <- dbConnect(...) #Fill this as usual
queries <- readLines("query.sql")
sapply(queries, function(x) dbGetQuery(con,x))
dbDisconnect(con)
由于我经常使用它,因此我的.Rprofile
文件中有一个快捷方式:
dbGetQueries<-function(con,queries)sapply(queries,function(x)dbGetQuery(con,x))
当然,你也可以走这system
条路:
system("psql -U username -d database -h 127.0.0.1 -p 5432 -f query.sql") #Remember to use your actual username, database, host and port