最近准备做一个股票的数据库,用R语言来获取数据,然后存在SQL Sever 2016 express 里面,虽然前面接触过一些操作,但是还是很不熟悉,现在数据已经能获取到了,是时候好好学习一下怎么用R来操作数据库.
- RODBC基础(翻译自RODBC文档)
- 连接数据库
###载入包 library(RODBC) ###新建一个连接 ch <- odbcConnect("some dsn") ###关闭连接 colse(ch) ###或者 odbcClose(ch)
###如果有密码/大多数情况都有
ch <- odbcConnect("some_dsn", uid = "user", pwd = "****")
2. 从数据库读取文件
###获取可以访问的表 sqlTables(ch) ###更加精确的查询 sqlTables(ch, tableType = "TABLE") sqlTables(ch, schema = "some pattern") sqlTables(ch, tableName = "some pattern") ###这里的schema百度说等价于用户名,我对数据库不怎么了解 ###要获取某个表的数据 res <- sqlFetch(ch, "table name") ###限制最大行数 res <- sqlFetch(ch, "table name", max = m) res <- sqlFetchMore(ch, "table name", max = m) ###细节有机会再看了,这里返回的是一个data.frame ###提取列 sqlColumns(ch, "USArrests") ###使用SQL语句筛选出需要返回的数据 sqlQuery(sh, paste("SELECT State, Murder FROM USArrests", + "WHERE Rape > 30 ORDER BY Murder")) ###SQL语句的意义另作讨论,不在本文范畴内,需要指出每个DBMS的SQL语句可能不一样
表名字
文中说DBMS允许的表名称可能不一样,有的表名允许有空格,小数点等,像这种数据库需要在连接的时候指定一下参数,具体的看连接的函数,命名的时候还是不要给自己找麻烦的好.
3.向数据库写入
###删除表,可能存在的 sqlDrop(ch, "table name", errors = FALSE) ###创建表,默认使用的是数据框的名字,还有一个函数sqlUpdate sqlSave(ch, some data frame) ###数据类型存入数据库后只有二进制值和字符串(日期将会作为字符串)
讲道理,会这些应该就能满足我的需要了,虽然这里面肯定还有很多坑,只有实践才会知道了。