Matlab数据库工具箱的简单使用
Database Toolbox 2和關系數據庫進行數據交換
Database 工具箱可以使你使用MATLAB 的數據分析
和可視化工具對存 儲在數據庫中的數據進行分析。在
MATLAB 工作環境中, 您可以使用結構化查詢語言進
行:?
■ 對數據庫中的數據進行讀寫
■ 使用約束條件對數據庫進行操作
您可以在MATLAB 中和絕大多數的數據庫進行交
互, 包括Oracle、Sybase、Microsoft SQL Server、
MySQL、PostgreSQL 以及Microsoft Access 。該工具箱
還允許您在單個的MATLAB 任務中同時存取多個數據
庫并且支持事務特性。它包含了Visual Query Builder?
( 可視化查詢工具), 它可以使您在不熟悉SQL 的情
況下和數據庫進行交互。
Visual Query Builder?
可以快速對您的數據
進行存取和圖表顯示
關鍵特性
■ 支持ODBC/JDBC 連接的數據庫接口
包 括Oracle、Sybase、Microsoft SQL?
Server、MySQL、PostgreSQL 以及
Microsoft Access?
■ 從MATLAB 中直接執行查詢語句
■ 對于大數據量查詢, 將增量獲取數據?
■ 在所有的數據導入和導出的過程中,?
保留數據類型
■ 單個的MATLAB 任務中可以同時
存取多個數據庫
■ 從一個數據庫中導入數據,完成計
算后, 將結果輸出到另外一個數據庫?
■ 在單個事務中獲取大數據集, 或者分
割數據, 通過多個事務來完成
■ 通過在一個MATLAB 會話中保持數
據庫連接來減少需要進行輸入和輸出
數據所需要的語句, 除非數據庫連接
被顯式關閉?
■ 它可以使您在不熟悉SQL 的情況下
和數據庫進行交互
在MATLAB 中對Microsoft Access 數據庫進行查詢
數據庫工具箱函數列表?
數據庫訪問函數?
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 得到自動更新表列
數據庫工具箱讓用戶使用MATLAB強大數據分析和可視化工具功能處理存儲在數據庫中的數據的復雜分析。在MATLAB環境下工作,可以用結構化查詢語言 SQL)命令:
讀,寫數據庫的數據?
簡單和高級條件的數據查詢?
連接MATLAB和數據庫包括 Oracle,Sybase,Microsoft SQL Server和Informix。
可以用單一MATLAB同時訪問多個數據庫,進行大 數據量的事務處理。不懂SQL的用戶可以用Visual Query Builder處理數據。?
重點?
魯棒接口能力。 用ODBC/JDBC連接數據庫,包括Oracle,Sybase SQL Server,Sybase SQL Anywhere,Microsoft SQL Server, Microsoft Access,
Informix Ingres.?
SQL語法。 在MATLAB環境直接執行SQL查詢?
動態導入數據。 調節SQL查詢,把數據導入MATLAB。數據庫工具箱滿足小的和大的查詢。
數據類型保存。 在數據導入和導出行為MATLAB保存數據類型?
同時訪問多個數據庫。 從數據庫導入數據,對該數據執行計算,然后導入到另一個數據庫。?
處理大數據集的能力。?
連續狀態的數據庫連接:一旦和某個數據庫的連接 建立后,數據庫一直是打開的,除非在MATLAB中執行關閉語句。這提高了數據庫的讀取速度,減少了不必要的命令來調入,輸出數據 Visual Query Builder. 該圖形用戶接口列數據源和所有表和字段,不懂SQL的用戶可以訪問和查詢數據庫函數列表?
Visual Query Builder 不支持漢字,所以我覺得使用 Visual Query Builder 不是最好的方法;使用DAO,特別ADO是一種很好方法,可以做到與數據庫無關;請看我的一個訪問數據庫的實例:?
function Table=GetTable(ConnectionStr,SqlStr)?
%ConnectionStr為連接串,比如可以設置 ConnectionStr='Data Source=HistryData2.0;
Pr
ovider=MSDASQL;User ID=Admin;Password=;'?
%SqlStr為SQL語句,?
% 利用ADO調用數據源?
try?
MyConnection=actxserver('ADODB.Connection');?
MyConnection.ConnectionString=ConnectionStr;?
invoke(MyConnection,'Open');?
MyRecordset=invoke(MyConnection,'Execute',SqlStr);?
? ? ?
%域信 息?
Fields=MyRecordset.Fields;?
%域個數?
FieldNumber=Fields.Count;?
FieldNames=cell(1,FieldNumber);?
%獲取數據?
% invoke(MyRecordset,'MoveFirst');?
Data=invoke(MyRecordset,'GetRows');?
MyRecordset.Source;?
%記錄行數?
RecordCount=size(Data,2);?
for i=1:size(FieldNames,2)?
? ? TempField=get(Fields,'Item',i-1);?
? ? FieldNames{i}=TempField.Name;?
end?
%給Table賦植?
Table.RecordCount=RecordCount;?
Table.FieldNames=FieldNames;?
Table.Data=Data;?
invoke(MyRecordset,'Close');?
invoke(MyConnection,'Close');?
catch?
? ? msgbox(lasterr,'Tint');?
? ? Table.Data={};?
end
一、通過MATLAB 提供的數據庫引擎, 以下是MATLAB ,DATABASE TOOLBOX中的例子,?
通過 ODBC/JDBC 接口訪問具體的數據庫?
function dbimportdemo()?
%DBIMPORTDEMO Imports data into Matlab from a database.?
% Version 1.0 21-Oct-1997?
% Author(s): E.F. McGoldrick, 12/5/1997?
% Copyright (c) 1984-2001 The MathWorks, Inc.?
% $Revision: 1.7 $ $Date: 2001/01/12 16:22:06 $?
% Set maximum time allowed for establishing a connection.?
timeoutA=logintimeout(5)?
% Connect to a database.?
%打開數據源 SampleDB?
connA=database('SampleDB','','')?
% Check the database status.?
ping(connA)?
% Open cursor and execute SQL statement.?
%執行SQL查詢語句?
cursorA=exec(connA,'select country from customers');?
% Fetch the first 10 rows of data.?
% 獲取前十行數據?
cursorA=fetch(cursorA,10)?
% Display the data.?
%顯 示?
AA=cursorA.Data?
% Close the cursor and the connection.?
% 關閉?
close(cursorA)?
close(connA)?
二、通過DAO訪問數據庫(DAO技術適合于訪問ACCESS 2000以下版本的數據庫,優點是功
能
齊全,具體可以參考MSDN關于DAO的幫助),以下是我自己摸索出來的,在MATLAB幫助文
件
中 有關于如何調用EXCEL組件的方法。?
Handle=actxserver('DAO.DBEngine.36');?
MyWSS=get(Handle,'Workspaces')?
Count=get(MyWSS,'Count')?
MyWS=get(MyWSS,'Item',0)?
%打開數據庫?
MyDB=invoke(MyWS,'OpenDatabase','D:\My Documents\test.mdb')?
%打開數據庫的表,得到一個指向記錄集的指針?
MyRS=invoke(MyDB,'OpenRecordset',' 用戶')?
%獲取“用戶”表的前十行數據?
MyRows=invoke(MyRS,'GetRows','10')?
%關閉?
invoke(MyRS,'Close')?
invoke(MyDB,'Close')?
invoke(MyWS,'Close')?
三、ADO技術(微軟建議 ACCESS 2000及以上版本的數據庫應盡量通過ADO訪問,優點是可
以
通過較少的對象訪問數據庫,ADO與今后微軟的數據庫技術發 展方向一致,目前支持的功
能
稍微少了一些)具體訪問的可以參考MSDN的幫助文件和ADO 類型庫的方法原型。?
四、通 過dde進行動態數據交換,可以查看help?
五、通過activex控件
總結
以上是生活随笔為你收集整理的Matlab数据库工具箱的简单使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [Js-开发常识]为什么定义实体类属性建
- 下一篇: python 文件读取报错 ‘utf-8