如何用matlab把数据集导入数据库

最近要新几个好的新算法,要用到数据集,老师要求我们把数据集导入数据库,方便开发。所以就学习着matlab,但是从网上下载的数据一般都是矩阵类型的怎么才能导入数据库呢?网上找了找,怎么也没找到全适的答案,自己就试着把解决方法写出了,以方便以后的使用,方便大家。

这里讲的是怎样用matlab链接数据库。

http://www.matlabsky.com/thread-9275-1-1.html

MatlabSQL Server数据库编程-Godman

 

1.
配置数据源

“控制面板”----“管理工具”——“数据源(ODBC)”——“添加”——“创建数据源”。具体操作见“数据源配置-SQL Server.gif

 

2.
建立链接对象——database

调用格式:

conna=database(‘datasourcename’,’username’,’password’);

conna=database('db_sql_server','sa','sa123456789');

%数据库名,用户名,密码;

其中db_sql_server为上文中创建的数据源名称,其余为SQL安装时输入的用户名和密码

3.
建立并打开游标——exec

调用格式:

curs=exec(conna,'sqlquery')

curs=exec(conna,'select * from database')

其中conna为上文中链接对象,select * from database表示从表database中选择所有的数据.

4.
把数据库中的数据读取到Matlab中——fetch

调用格式:

curs=fetch(curs,RowLimit);

Data=curs.Data%把读取到的数据用变量Data保存.

curs=fetch(curs)

把所有的数据一次全部读取到Matlab中,RowLimit为每次读取的数据参数的行数,默认为全部读取,但是全部读取会很费时间(和计算机性能很大关系)。

上述四点是matlab从数据库文件中读取数据到matlab中的基本步骤。

实例:

timeoutA=logintimeout(5);%设置连接数据库的时间

conn = database('db_sql_server','sa','sa123456789');

%数据库名,用户名,密码

ping(conn);

cursorA=exec(conn,'SELECT * FROM Sh');

%/执行select语句,Sh:数据表名

setdbprefs ('DataReturnFormat','cellarray')
;

%返回数据类型为元包(cell)型,默认为CELL型。要通过cell2mat()转换格式

cursorA=fetch(cursorA);

%将数据库中的内容写入MATLAB工作空间

AA=cursorA.Data

%得到数据库中的数据

%关闭连接

close(cursorA)

close(conn);


其余操作如插入、删除、更新等可参加以前写的基于Access数据库的相关内容,下列函数可供参考,具体用法可以在Matlab中通过help查询。

数据库工具箱函数列表
数据库访问函数
clearwarnings 清除数据库连接警告
close 关闭数据库连接
commit 数据库改变参数
database 连接数据库
exec 执行SQL语句和打开油标
get 得到数据库属性
insert 导出MATLAB单元数组数据到数据库表
isconnection 判断数据库连接是否有效
isreadonly 判断数据库连接是否只读
ping 得到数据库连接信息
rollback 撤销数据库变化
set 设置数据库连接属性
sql2native 转换JDBC SQL 语法为系统本身的SQL语法
update 用MATLAB单元数组数据代替数据库表的数据
数据库游标访问函数
attr 获得的数据集的列属性
close 关闭游标
cols 获得的数据集的列数值
columnnames 获得的数据集的列名称
fetch 导入数据到MATLAB单元数组
get 得到游标对象属性
querytimeout 数据库SQL查询成功的时间
rows 获取数据集的行数
set 设置游标获取的行限制
width 获取数据集的列宽
数据库元数据函数
bestrowid 得到数据库表唯一行标识
columnprivileges 得到数据库列优先权
columns 得到数据库表列名称
crossreference 得到主健和外健信息
dmd 创建数据库元数据对象
exportedkeys 得到导出外部健信息
get 得到数据库元数据属性
importedkeys 得到导入外健信息
indexinfo 得到数据库表的索引和统计
primarykeys 从数据库表或结构得到主健信息
procedurecolumns 得到目录存储程序参数和结果列
procedures 得到目录存储程序
supports 判断是否支持数据库元数据
tableprivileges 得到数据库表优先权
tables 得到数据库表名称
versioncolumns 得到自动更新表列

按照上面的操作自己写一下insert语句。

 conn=database('dataset','sa','admin609');for i=1:12103,insert(conn,'dataset',{'index0','index1','index2','index3','index4','index5','index6','index7','index8','index9','index10','index11','index12','index13','index14','index15','index16','index17','index18','index19','index20','index21','index22','index23','index24','index25','index26','index27','index28','index29','index30','index31','index32','index33','index34','index35','index36','index37','index38','index39','index40','index41','index42','index43','index44','index45','index46','index47','index48','index49','index50','index51','index52','index53','index54','index55','index56','index57','index58','index59','index60','index61','index62','index63'},B(i,:)),end

写个for循环搞定了。

具体matlab的操作参见:http://math.ecnu.edu.cn/sxsykc/jxnr/mat5.htm#_Toc378651269

猜你喜欢

转载自lqzit.iteye.com/blog/1238759