前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R包系列——RODBC包教程

R包系列——RODBC包教程

作者头像
企鹅号小编
发布2018-01-24 11:10:44
1.7K0
发布2018-01-24 11:10:44
举报
文章被收录于专栏:数据库数据库

在R基础——数据的导入与导出(下)中,介绍了使用RODBC包连接SQL server数据库,在这篇文章中,根据我工作内容,介绍该包的基本操作,同时,根据我使用该包时出现的问题,介绍解决问题的方法。

首先,连接数据库;

#连接数据库conn

获取数据库表信息

场景:在数据库中有多个相同结构(列)的表,但是列名不同,获取其中一个表的列名,再统一其他表的列名。

#获取列名colname

对于批量处理,统一列名就可以使用同一列名操作了,而不用再重复写代码。当然,使用数值向量也是可以的,但是这样就降低了代码的可读性,我还是偏向于使用列名。

读取数据

场景:读取数据库的表中数据至R中。

#读取数据#整表读取df

可以看出来,该函数的使用较为简单,像其他where语句,group by语句等等复杂的查询都无法实现。所以这个函数在我工作中,基本不怎么使用。

使用sqlQuery函数

sqlQuery()函数直接使用sql语句,对数据库进行查询。

#使用sqlQuery进行复杂的查询df

sqlQuery()函数的第二个参数为sql的查询语句,需要对sql语句有一定的熟悉。

导出至数据库

场景:当在R中跑了模型或者处理完数据,需要保存至数据库重复利用时。

#整表导入数据库sqlSave(conn, df, "表名")#向已有表追加数据sqlSave(conn, df, "表名", append = T)

在向已有表中追加数据的时候,会经常出现问题:数据类型无法转化,导致无法追加;

#指定转换类型#列名colname

上面的方法能够解决一部分问题,但是仍然会在一些类型转换中出现问题。我一般的做法是这样:先将要追加进数据库的数据框导入到数据库中,再使用sql语句插入到已有表中。

#使用insert into方法将数据追加至数据库中已有表中SqlInsertSelect

对于sqlSave()函数的追加功能,实在是太差了,各种BUG,体验太差了。而使用sql语句插入,则完全没问题,故我一般使用该方法。

更新表

场景:需要对数据库中表进行更新。

#更新表sqlUpdate(conn, df, "更新的表名")

使用该函数更新表中的数据,需要数据框与数据库中表的结构一致,不然会更新失败。

在我工作中,由于需要更新的表不大,我一般使用整表更新:清空已有表,再插入表。

#整表更新#清空表sqlClear(conn, "表名")#插入表,使用上面的函数SqlInsertSelect(newdf, conn, "表名")

当表较大的时候,还是使用sqlQuery()函数更新为好。

#使用sqlQuery()函数更新sqlQuery(conn, "update 表名 set 列名 = 值 where ")

复制表

场景:当需要将数据库中的某一表复制至另一个数据库中。

#复制表sqlCopy( channel = conn, query = "select * from conn表名", destination = "conn2表名", #复制的表名 destchannel = conn2)

在我工作中,需要将主数据库中的一个表复制至另一个数据库,该函数很好的解决了我这个痛点。

其他操作

场景:其他操作,常用但简单功能。

#删除表sqlDrop(conn, "表名")#关闭连接odbcClose(conn)

使用完数据库后,记得关闭连接。

总结

整表读取导入更新,sqlFetch(),sqlSave(),sqlUpdate()函数;

复杂读取导入更新,使用sqlQuery()函数进行sql语句查询;

复制表,sqlCopyTable()函数;

本文来自企鹅号 - 全球大搜罗媒体

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文来自企鹅号 - 全球大搜罗媒体

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档