RPostgres, 一种符合PostgreSQL标准

分享于 

3分钟阅读

GitHub

 
A DBI-compliant interface to PostgreSQL
  • 源代码名称:RPostgres
  • 源代码网址:http://www.github.com/r-dbi/RPostgres
  • RPostgres源代码文档
  • RPostgres源代码下载
  • Git URL:
    git://www.github.com/r-dbi/RPostgres.git
    Git Clone代码到本地:
    git clone http://www.github.com/r-dbi/RPostgres
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/r-dbi/RPostgres
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
    RPostgres

    Travis-CI Build StatusAppVeyor Build Statuscodecov

    RPostgres是与postgres数据库兼容的符合dbi的接口。 这是用 C++ 和Rcpp重写的。 RPostgresSQL相比,它:

    • 通过 dbSendQuery()dbBind() 对参数化查询有完全支持。

    • 自动清理打开连接和结果集,确保不需要担心泄漏连接或者内存。

    • 在每次查询中保存 ~5 ms的速度要快一点。 如果需要参考,从本地数据库检索一个 10 x 25结果集,这是一个不错的选择,所以对于较小的查询,这是

    • 一个简化的构建过程,依赖于系统 libpq。

    安装

    # Install the latest RPostgres release from CRAN:install.packages("RPostgres")# Or the the development version from GitHub:# install.packages("remotes")remotes::install_github("r-dbi/RPostgres")

    基本用法

    library(DBI)# Connect to the default postgres databasecon<- dbConnect(RPostgres::Postgres())
    dbListTables(con)
    dbWriteTable(con, "mtcars", mtcars)
    dbListTables(con)
    dbListFields(con, "mtcars")
    dbReadTable(con, "mtcars")# You can fetch all results:res<- dbSendQuery(con, "SELECT * FROM mtcars WHERE cyl = 4")
    dbFetch(res)
    dbClearResult(res)# Or a chunk at a timeres<- dbSendQuery(con, "SELECT * FROM mtcars WHERE cyl = 4")while(!dbHasCompleted(res)){
     chunk<- dbFetch(res, n=5)
     print(nrow(chunk))
    }# Clear the resultdbClearResult(res)# Disconnect from the databasedbDisconnect(con)

    连接到特定的Postgres实例

    library(DBI)# Connect to a specific postgres database i.e. Herokucon<- dbConnect(RPostgres::Postgres(),dbname='DATABASE_NAME', 
     host='HOST', # i.e. 'ec2-54-83-201-96.compute-1.amazonaws.com'port=5432, # or any other port specified by your DBAuser='USERNAME',
     password='PASSWORD')

    设计说明

    最初的DBI设计假设每个包可以实例化X 驱动器,每个驱动器 Having的连接和每个连接 Having的结果。 结果是太笼统了: 驱动程序没有真正的状态,对于 PostgreSQL,每个连接只能有一个结果集。 在RPostgres包中,在C 端只有一个类: 连接,可以选择包含结果集。 在 R 端,驱动类只是没有内容( 仅用于调度)的虚拟类,连接和结果对象都指向相同的外部指针。


    COM  INT  接口  pos  POST  postgres  
    相关文章