MATLAB程序设计Matlab与数据库的数据交互.docx
- 文档编号:2867210
- 上传时间:2022-11-16
- 格式:DOCX
- 页数:22
- 大小:420.27KB
MATLAB程序设计Matlab与数据库的数据交互.docx
《MATLAB程序设计Matlab与数据库的数据交互.docx》由会员分享,可在线阅读,更多相关《MATLAB程序设计Matlab与数据库的数据交互.docx(22页珍藏版)》请在冰豆网上搜索。
MATLAB程序设计Matlab与数据库的数据交互
Matlab与数据库的数据交互
1案例背景
随着计算机数据库技术的应用与发展,科学研究与生产生活中的大量数据都按一定的规则方式存储在数据库中,例如:
个人的各种账户(包括银行账户、证券账户、手机账户、论坛账户等等)及账户涉及到的各种信息都存储在数据库中。
若能将大量数据导入到Matlab中,利用Matlab优异的数值技术与图形展示技术,更好的处理或分析科学研究与生产生活的数据,进行实证性研究或者潜在规则的挖掘。
本章使用的编程环境为Matlab2009a,SQLServer2005ExpressEdition。
其中SQLServer2005ExpressEdition为SQLServer2005的免费版本,读者可以从微软网站上下载相关安装文件,SQLServer2005ExpressEdition的安装方法本章节不再详述,读者可以参考微软的相关说明文档。
数据的获取方式除了从数据库之间获取外,还可以通过网络获取所需数据。
而且,目前网络已经成为数据重要的来源之一,Matlab可以一次性按格式从网络中读取大量数据。
在第三节,笔者以matlab读取Yahoo财经数据与Google财经数据为例进行实例讲解。
2MATLAB实现
2.1Database工具箱简介
Mathworks公司为Matlab与数据库连接提供了有效接口—Database工具箱。
Database工具箱帮助用户使用Matlab的可视化技术与数据分析技术处理数据库中的信息。
在Matlab的工作环境下,用户可以使用SQL(structuredquerylanguage)标准数据查询语言从数据读取数据或将数据写入数据库。
目前,Matlab可以支持与主要厂商的数据库产品进行连接,例如Oracle、Sybase、Microsoft,SQLServer,andInformix等数据库。
Matlab的Database工具箱还自带了VisualQueryBuilder交互式界面方便用户使用数据。
2.2Database工具箱函数
Database工具箱函数,具体分为数据库访问数据、数据库游标访问函数、数据库元数据访问函数。
函数具体功能见下表1、2、3,由于相关函数较多,在本节不再详述相关函数语法,在实例中将具体讲解实例使用到时函数语法。
表1:
数据库访问函数
函数名称
函数功能
clearwarnings
清除数据库连接警告
close
关闭数据库连接
commit
数据库改变参数
database
连接数据库
exec
执行SQL语句和打开游标
get
得到数据库属性
insert
导出MATLAB单元数组数据到数据库表
isconnection
判断数据库连接是否有效
isreadonly
判断数据库连接是否只读
ping
得到数据库连接信息
rollback
撤销数据库变化
set
设置数据库连接属性
sql2native
转换JDBCSQL语法为系统本身的SQL语法
update
用MATLAB单元数组数据代替数据库表的数据
表2:
数据库游标访问函数
函数名称
函数功能
attr
获得的数据集的列属性
close
关闭游标
cols
获得的数据集的列数值
columnnames
获得的数据集的列名称
fetch
导入数据到MATLAB单元数组
get
得到游标对象属性
querytimeout
数据库SQL查询成功的时间
rows
获取数据集的行数
set
设置游标获取的行限制
width
获取数据集的列宽
attr
获得的数据集的列属性
close
关闭游标
cols
获得的数据集的列数值
columnnames
获得的数据集的列名称
fetch
导入数据到MATLAB单元数组
表3:
数据库元数据函数:
函数名称
函数功能
bestrowid
得到数据库表唯一行标识
columnprivileges
得到数据库列优先权
columns
得到数据库表列名称
crossreference
得到主键和外键信息
dmd
创建数据库元数据对象
exportedkeys
得到导出外部键信息
get
得到数据库元数据属性
importedkeys
得到导入外键信息
indexinfo
得到数据库表的索引和统计
primarykeys
从数据库表或结构得到主键信息
procedurecolumns
得到目录存储程序参数和结果列
procedures
得到目录存储程序
supports
判断是否支持数据库元数据
tableprivileges
得到数据库表优先权
tables
得到数据库表名称
上述仅列出函数名称与函数的主要功能,函数的具体使用请读者参考matlab的Database工具箱相关帮助信息。
2.3数据库数据读取
数据库数据读取主要由数据库连接,获取数据库信息,执行SQL查询语言查询数据,关闭数据连接等几个主要步骤组成。
在进行Matlab与数据库的交互前首先要对数据源进行配置(参见附录一)
(1)数据库连接函数database
database函数语法
conn=database('datasourcename','username','password')
输入参数:
datasourcename:
数据库名称(连接对象的名称,如果不是本地数据,需输入网址或者IP地址及端口)
username:
数据库用户名
password:
数据库密码
输出参数:
Conn:
建立数据连接对象(内含连接信息、参数)
函数测试:
m文件DatabaseRead.m
%DatabaseReadTest
%codebyxxxxxxxxxx@
%建立数据连接
conn=database('ARIS_SQL','xx','xxxxxxxxxx')
%数据库名称为“ARIS_SQL”为本数据库之间输入数据名称即可
%用户名为'xx',密码为'xxxxxxxxxx',读者需根据自己数据库的设置进行修改
%如果不是本地数据,需输入网址或者IP地址及端口
%数据库用户名为”xx”
%数据库密码为“xxxxxxxxxx”
结果输出:
conn=
Instance:
'ARIS_SQL'%数据名称
UserName:
'xx'%用户名称
Driver:
[]
URL:
[]
Constructor:
[1x1com.mathworks.toolbox.database.databaseConnect]
Mesxxge:
[]
Handle:
[1x1sun.jdbc.odbc.JdbcOdbcConnection]
TimeOut:
0
AutoCommit:
'on'%连接成功
Type:
'DatabaseObject'
注释:
AutoCommit:
'on'表示数据库链接成功
AutoCommit:
'off'表示数据库链接失败
(2)获取数据库连接信息函数ping
ping函数语法
ping(conn)
通过ping函数可以获得数据库连接的数据版本、数据名称、驱动程序、URL地址等等。
输入参数:
Conn:
数据库连接对象
输出参数:
DatabaseProductName:
数据库产品名称
DatabaseProductVersion:
数据库产品版本
JDBCDriverName:
JDBC驱动名称
JDBCDriverVersion:
JDBC驱动版本
MaxDatabaseConnections:
数据库最大连接数量
CurrentUserName:
使用的数据库名称
DatabaseURL:
数据库URL地址
AutoCommitTranxxctions:
是否连接
参数测试:
m文件DatabaseRead.m
%获取数据库连接信息
ping(conn);
结果输出:
ans=
DatabaseProductName:
'MicrosoftSQLServer'
%数据库为'MicrosoftSQLServer'
DatabaseProductVersion:
'09.00.1399'
%数据库版本为'09.00.1399'
JDBCDriverName:
'JDBC-ODBCBridge(SQLSRV32.DLL)'
%数据库的驱动程序为“JDBC-ODBCBridge”
JDBCDriverVersion:
'2.0001(03.85.1132)'
%驱动程序版本“2.0001(03.85.1132)”
MaxDatabaseConnections:
0
%数据库最大连接数(未设置)
CurrentUserName:
'dbo'
%当前用户名称“dbo”
DatabaseURL:
'jdbc:
odbc:
ARIS_SQL'
%数据库连接地址'jdbc:
odbc:
ARIS_SQL'
AutoCommitTranxxctions:
'True'
(3)执行SQL语句和打开游标函数exec
exec函数语法
curs=exec(conn,'sqlquery')
输入参数
Conn:
数据库连接对象
Sqlquery:
sql数据库查询语句
输出参数
Curs:
结构体(游标)
函数测试:
m文件DatabaseRead.m
该程序的目标是从数据库表StockData.dbo.Hs300中查询2008-01-01到2010-01-01之间是沪深300指数的点位.
SQL查询语言的框架为
Use数据库
Select数据内容
From数据表名称(查询目标表)
Where查询条件
Olderby排序方式
例如,在数据wind_db中的Price表中查询交易日在2012年的OpenPrice数据,按时间先后排序.
Usewind_db
SelectOpenPrice
FromPrice
Whereyear(time)==2012
Olderbytime
本节对SQL语言的语法不进行详细讲解,若读者需要阅读SQL语言书籍。
数据表StockData.dbo.Hs300的结构为:
表4:
StockData数据表结构
字段
类型
Date
Datetime类型
Price
Double类型
Vol
Double类型
Sqlquery:
SQL语言
--全部价格数据
SELECTALLPrice
--从表StockData.dbo.Hs300中,存储的是沪深300的数据
FROMStockData.dbo.Hs300
--查询的价格数据的日期在2008-1-1与2010-01-01之间的(价格数据)
WHEREDateBETWEEN''2008-01-01''AND''2010-01-01''
注释:
在Sql语言中”--”后的表示注释,类似matlab中的”%”。
Matlab语言
%查询数据
curs=exec(conn,'SELECTALLPriceFROMStockData.dbo.Hs300WHEREDateBETWEEN''2008-01-01''AND''2010-01-01''')
输出结果:
Attributes:
[]
Data:
0
DatabaseObject:
[1x1database]
RowLimi
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MATLAB 程序设计 数据库 数据 交互