如何用matlab把数据集导入数据库
最近要新几个好的新算法,要用到数据集,老师要求我们把数据集导入数据库,方便开发。所以就学习着matlab,但是从网上下载的数据一般都是矩阵类型的怎么才能导入数据库呢?网上找了找,怎么也没找到全适的答案,自己就试着把解决方法写出了,以方便以后的使用,方便大家。
这里讲的是怎样用matlab链接数据库。
http://www.matlabsky.com/thread-9275-1-1.html
Matlab与SQL 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转换JDBCSQL语法为系统本身的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