如何用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

相关推荐