Matlab连接数据库

MATLAB连接数据库及分析

今天小编在数据分析的过程中遇到了一个很棘手的问题。前同事写的matalab分析数据的模板是从本地的PDF扫描关键数据,然后从Excel中提取预测的数据。

而我们的另一个同事也用了Python提取了PDF数据,并且把这些数据以及他预测的数据录入了本地局域网的 数据库里面。

为了工作内容的即时性和便捷性,于是我们就希望实现利用Matalab连接到本地的数据库里面进行查询,将查询到的数据进行分析。

话不多说,直接开始实战(利用ODBC数据源方式连接MySql):

第一步:安装MySql

MySql安装教程

在安装好MySQL之后,我们本地局域网有一个cydata的数据库。现在要开始连接这个数据库并查询。

第二步:安装Mysql-connect-ODBC驱动

下载Mysql-connect-OBDC驱动

根据自己电脑的型号选择下载的驱动类型。小编下载的是这个:

OBDC驱动

下载之前需要注册Oracle网站的账号,大家根据官网提示下载即可。

然后根据安装程序的提示直接安装即可,有手就行,在这里就不赘述了。

设置数据库

打开控制面板,选择管理工具里面的ODBC数据源

OBDC数据源

点击OBDC数据源,依次点击添加、Mysql ODBC 8.0 Unicode Driver,如下图

添加ODBC驱动

然后点击完成,会出现如下数据库连接的菜单

数据库连接菜单

按照如下内容填写你需要连接的数据库的信息

连接数据库参数

注意要在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));

然后就可以用上面得到的数据进行分析了,有了网络数据库,日常工作更加快捷、方便。

你可能感兴趣的:(Matlab连接数据库)