生物信息学生R入门教程–输入与输出

数据库文件

R的数据库操作主要有以下几个包:RODBC, RMySQL, ROracle, RJDBC, RSQLite, DBI。这里只介绍DBI,因为通过使用不同的驱动,DBI就可以轻松地访问ODBC, JDBC, MySQL, Oracle and SQLite数据库。DBI被广泛地应用于Bioconductor的注释文件操作。使用DBI获取数据分为四步:建立联接,发送查寻语句,读取数据,关闭联接。数据库写入只是查寻语句不同,并且不需要再用fetch读取数据而已。

> library(DBI)
> library(RSQLite)
> dbPath <- system.file("extdata", "org.Hs.eg.sqlite", package = "org.Hs.eg.db")
> drv <- dbDriver("SQLite")
> db <- dbConnect(drv, dbPath)
> db
## <SQLiteConnection: DBI CON (79882, 0)>
> dbListTables(db)  ## 等同于MySQL函数 show tables;
##  [1] "accessions"            "alias"                
##  [3] "chrlengths"            "chromosome_locations" 
##  [5] "chromosomes"           "cytogenetic_locations"
##  [7] "ec"                    "ensembl"              
##  [9] "ensembl2ncbi"          "ensembl_prot"         
## [11] "ensembl_trans"         "gene_info"            
## [13] "genes"                 "go"                   
## [15] "go_all"                "go_bp"                
## [17] "go_bp_all"             "go_cc"                
## [19] "go_cc_all"             "go_mf"                
## [21] "go_mf_all"             "kegg"                 
## [23] "map_counts"            "map_metadata"         
## [25] "metadata"              "ncbi2ensembl"         
## [27] "omim"                  "pfam"                 
## [29] "prosite"               "pubmed"               
## [31] "refseq"                "sqlite_stat1"         
## [33] "ucsc"                  "unigene"              
## [35] "uniprot"
> dbListFields(db, "alias")  ## 类似于MySQL函数 show columns from alias;
## [1] "_id"          "alias_symbol"
> ## 从数据库读取数据
> sql <- "SELECT * FROM alias LIMIT 20"
> rs <- dbSendQuery(db, sql)
> rs
## <SQLiteResult: DBI RES (79882, 0, 3)>
> dbColumnInfo(rs)
## data frame with 0 columns and 0 rows
> dbGetStatement(rs)
## [1] "SELECT * FROM alias LIMIT 20"
> chunk <- fetch(rs, n = 10)
> chunk
##    _id alias_symbol
## 1    1          A1B
## 2    1          ABG
## 3    1          GAB
## 4    1     HYST2477
## 5    2         A2MD
## 6    2       CPAMD5
## 7    2       FWP007
## 8    2       S863-7
## 9    3         A2MP
## 10   4         AAC1
> ## 把余下的数据全部读出
> fetch(rs, n = -1)
##    _id alias_symbol
## 11   4         MNAT
## 12   4        NAT-1
## 13   4         NATI
## 14   5         AAC2
## 15   5        NAT-2
## 16   5         PNAT
## 17   6         AACP
## 18   6        NATP1
## 19   7         AACT
## 20   7          ACT
> ## 如果不再需要查询的结果了,需要清理掉它。
> dbClearResult(rs)
## [1] TRUE
> ## 断开数据库连接
> dbDisconnect(db)
## [1] TRUE
> 
> ## 写入数据到数据库
> tfile <- tempfile()
> con <- dbConnect(drv, dbname = tfile)
> dbWriteTable(con, "test", chunk)
## [1] TRUE
> 
> ## 测试一下写入的数据
> res <- dbSendQuery(con, statement = "SELECT * FROM test")
> ## 现在读取5行到一个data.frame
> data1 <- fetch(res, n = 5)
> dim(data1)
## [1] 5 3
> ## 把余下的数据全部读出
> data2 <- fetch(res, n = -1)
> data2
##    row_names X_id alias_symbol
## 6          6    2       CPAMD5
## 7          7    2       FWP007
## 8          8    2       S863-7
## 9          9    3         A2MP
## 10        10    4         AAC1
> ## 如果不再需要查询的结果了,需要清理掉它。
> dbClearResult(res)
## [1] TRUE
> ## 断开数据库连接
> dbDisconnect(con)
## [1] TRUE

2 thoughts on “生物信息学生R入门教程–输入与输出

  1. 您好:我想请教您怎么能从零基础学好R并应用于生物信息学中?我自己看了很久收获特别少

发表评论

电子邮件地址不会被公开。 必填项已用*标注