matlab是一款非常常用的数据分析、建模软件,最近想做一款金融数据分析的分析工具,之前都是使用python先把数据从网络爬取下来,或者从自己的linux服务器上面导出来,保存在本地,每一列都是数字类型,然后使用matlab的importdata或者read_csv读入数据,然后再分析,这种方式很慢,效率低下,不能方便的处理字符串数据,然而在很多项目中,文本信息是很重要的数据,另一个缺点就是,每次分析数据都需要处理一次数据,虽然可以写各种各样的脚本从服务器获取数据、转化为矩阵类型存储在本地,但是一个项目有很多个表格,甚至涉及到很多个数据库,这就意味着要写很多个脚本,而且每一个项目都如此,所以在开展这个项目之前,还是得花点时间探索一下如何通过matlab直接从数据库获取数据
网上有很多教程,但是都没有很全面,所以这里自己总结一下,方便有同样需求得朋友。
matlab远程连接数据库有odbc和jdbc两种方式,这里odbc相比于jdbc有很多缺陷,所以这里介绍jdbc方式
这里有一个注意事项:
在配置之前得保证你的远程数据库允许所有ip地址远程连接,mysql安装以后如果没有配置的话,默认是只允许从本地登陆连接的,一开始我就是配置以后链接不上,捣鼓了很久才想到可能是这个原因,配置以后可以成功链接,下面说一下步骤
1:配置mysql数据库,配置允许所有ip地址远程连接
首先进入mysql命令行:
mysql -uuser -ppassword
user是要登陆mysql得用户名,password是该用户登陆mysql时得密码
比如你使用root登陆,密码是123456:
mysql -uroot -p123456
注意-u和用户名之间、以及-p与密码之间没有空格
登陆以后,再使用命令配置,user用户可以通过密码‘123456’从所有ip地址远程连接
grant all privileges on *.* to 'user'@'%' identified by '123456';
2:下载jdbc驱动,并配置到matlab路径中
jdbc下载地址:
https://dev.mysql.com/downloads/connector/j/
下载以后解压,并把加压后得
mysql-connector-java-5.1.46-bin.jar
jar文件复制到matlab安装目录下的java/jar目录中(其实随便放在那里都可以,主要是后面的配置,路径写对就可以)
3:配置matlab的路径文件
在matlab的安装目录下找到toolbox/local目录,目录中有一个classpath.txt文件,使用记事本等文本编辑器打开,在最下面添加一行,将刚才的jdbc驱动jar包路径配置进去
$matlabroot/java/jar/toolbox/mysql-connector-java-5.1.46-bin.jar
其中$matlabroot表示matlab的安装目录,你也可以写全路径,然后保存关闭,并重启matlab
4:在matlb中远程连接数据库
database='my_database';
user='root';
password='123456';
driver='com.mysql.jdbc.Driver';
url='jdbc:mysql://192.168.0.1:3306/my_database';
conn=database(database,user,password,driver,url)

如果连接成功,返回的结果中,AutoCommit 显示为‘on’
curs=exec(conn,'select * from my_table limit 10');
d=fetch(curs)
data=d.Data