R语言RODBC数据库操作
最近准备做一个股票的数据库,用R语言来获取数据,然后存在SQL Sever 2016 express 里面,虽然前面接触过一些操作,但是还是很不熟悉,现在数据已经能获取到了,是时候好好学习一下怎么用R来操作数据库.
- RODBC基础(翻译自RODBC文档)
- 连接数据库
1 2 3 4 5 6 7 8 | ###载入包 library (RODBC) ###新建一个连接 ch <- odbcConnect ( "some dsn" ) ###关闭连接 colse (ch) ###或者 odbcClose (ch)<br> ###如果有密码/大多数情况都有<br>ch <- odbcConnect("some_dsn", uid = "user", pwd = "****") |
2. 从数据库读取文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | ###获取可以访问的表 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.向数据库写入
1 2 3 4 5 | ###删除表,可能存在的 sqlDrop (ch, "table name" , errors = FALSE ) ###创建表,默认使用的是数据框的名字,还有一个函数sqlUpdate sqlSave (ch, some data frame) ###数据类型存入数据库后只有二进制值和字符串(日期将会作为字符串) |
讲道理,会这些应该就能满足我的需要了,虽然这里面肯定还有很多坑,只有实践才会知道了。
- 和SQL server交互
SQl server的安装不在这里说,都是easy的事情,不过需要注意的是在现版本的sql server,需要自己再下载一个management studio(SSMS),至于为什么要装这个......还不是因为不熟悉......
要使用ODBC需要先配置ODBC数据源,方法是win+R搜索ODBC,选择用户dsn,点击添加,选择sql server,服务器不要使用下拉栏的,反正我的会报错,服务器名称去SSMS里面查看,然后复制过来就好。
测试是否可以连接:
这种就算是可以了。
这里我使用一个下载的股票数据来测试,如下:
1 2 3 4 | ###其中temptable是我自己创建的 ###此函数是我获取股票数据的 stock_data_1 <- get_stock_data_today () sqlSave (stock_dsn,stock_data_1) |
能成功写入。
1 2 3 4 5 6 7 | ###增加一行 sqlSave (stock_dsn,stock_data_1[1,], "stock_data_1" ,append = TRUE ) ###这里增加一行之后,rownames会有重复,再次读取的时候会报错 ###但是像这样读取不会报错,却会多一列。 temp <- sqlFetch (stock_dsn, "stock_data_1" ,rownames = FALSE ) ###删除表 sqlDrop (stock_dsn, "stock_data_1" ) |
目前这样可以完全满足我的需求了~~~nice
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix