MATLAB连接数据库及分析
今天小编在数据分析的过程中遇到了一个很棘手的问题。前同事写的matalab分析数据的模板是从本地的PDF扫描关键数据,然后从Excel中提取预测的数据。
而我们的另一个同事也用了Python提取了PDF数据,并且把这些数据以及他预测的数据录入了本地局域网的 数据库里面。
为了工作内容的即时性和便捷性,于是我们就希望实现利用Matalab连接到本地的数据库里面进行查询,将查询到的数据进行分析。
话不多说,直接开始实战(利用ODBC数据源方式连接MySql):
第一步:安装MySql
在安装好MySQL之后,我们本地局域网有一个cydata的数据库。现在要开始连接这个数据库并查询。
第二步:安装Mysql-connect-ODBC驱动
根据自己电脑的型号选择下载的驱动类型。小编下载的是这个:
下载之前需要注册Oracle网站的账号,大家根据官网提示下载即可。
然后根据安装程序的提示直接安装即可,有手就行,在这里就不赘述了。
设置数据库
打开控制面板,选择管理工具里面的ODBC数据源
点击OBDC数据源,依次点击添加、Mysql ODBC 8.0 Unicode Driver,如下图
然后点击完成,会出现如下数据库连接的菜单
按照如下内容填写你需要连接的数据库的信息
注意要在detail中勾选Interactive Client且character set要填写gbk,否则你提取出来的数据只有数字,字符串不能完全转码。
连接数据库
话不多说,直接撸代码!
file = '洪梅镇财政供养公共建筑雨污分流工程.pdf';
% 工程名称
project_name = file(1 : end-4);
%连接数据库提取关键信息
conn= database('数据库名','用户名','密码')%打开MySql数据源中的数据库读入数据
%执行sql语句
data = exec(conn,['SELECT name,h,xfl,highest_offer,qlfs,town,bid_time,bid_place,method,type_tender,k,yc_xfl,yc_rs from bid_project WHERE name=''',project_name,''''])
data=fetch(data)
result = data.Data;%抽取数据
这里要注意两点
- conn后面的参数
- 当sql语句中需要传入参数的时候,sql语句的写法(matlab语法中[]是用来连接字符串的)
这里得到的result数据是一个以cell数组组成的数组,因此如果对单一元素构成的cell数组可以进行类型转换。
%把cell数组类型的数据转换为标准数据类型,数值类型用侧cell2mat方法,字符类型用char方法
h_bid = cell2mat(result(2));
Rp_bid = cell2mat(result(3));
M_bid = cell2mat(result(4));
qualification = char(result(5));
project_address = char(result(6));
bid_time = char(result(7));
bid_address = char(result(8));
bid_method = char(result(9));
bid_type = char(result(10));
然后就可以用上面得到的数据进行分析了,有了网络数据库,日常工作更加快捷、方便。