matlab 与数据库操作
第一部分:讀取數(shù)據(jù)其相關(guān)信息查看
1.??????配置數(shù)據(jù)源
(1).“控制面板”----“管理工具”——“數(shù)據(jù)源(ODBC)”——“添加”——“創(chuàng)建數(shù)據(jù)源名稱和選擇數(shù)據(jù)庫(kù)文件”。具體操作見數(shù)據(jù)源配置:?http://blog.csdn.net/xiaotianlan/article/details/50372414 ??
2.??????建立鏈接對(duì)象——database
調(diào)用格式:
conna=database(‘datasourcename’,’username’,’password’);
如conna=database('DCE','root','111111');其中DCE為上文中創(chuàng)建的數(shù)據(jù)源名稱,用戶名:root 密碼:111111。
3.??????建立并打開游標(biāo)——exec
調(diào)用格式:
curs=exec(conna,'sqlquery');
如curs=exec(conna,'select * from database')
其中conna為上文中鏈接對(duì)象,select * from database表示查詢表database所有數(shù)據(jù).
4.??????把數(shù)據(jù)庫(kù)中的數(shù)據(jù)讀取到Matlab中——fetch
調(diào)用格式:
curs=fetch(curs,RowLimit);
Data=curs.Data;%把讀取到的數(shù)據(jù)用變量Data保存.
如curs=fetch(curs);
把所有的數(shù)據(jù)一次全部讀取到Matlab中,RowLimit為每次讀取的數(shù)據(jù)參數(shù)的行數(shù),默認(rèn)為全部讀取,但是全部讀取會(huì)很費(fèi)時(shí)間(和計(jì)算機(jī)性能很大關(guān)系)。
上述四點(diǎn)是matlab從數(shù)據(jù)庫(kù)文件中讀取數(shù)據(jù)到matlab中的基本步驟。
5.??????數(shù)據(jù)返回類型
從數(shù)據(jù)庫(kù)中讀取數(shù)據(jù)到matlab有三種數(shù)據(jù)類型(默認(rèn)為元胞類型cellarray),分別為元胞類型(cellarray),數(shù)字型(numeric),結(jié)構(gòu)型(structure)。可以在鏈接數(shù)據(jù)庫(kù)之前通過setdbprefs函數(shù)來(lái)進(jìn)行設(shè)置。如果數(shù)據(jù)庫(kù)文件中全部是數(shù)值型數(shù)據(jù)時(shí)最好采用numeric型的數(shù)據(jù),這樣可以使得讀取速度大幅提高,特別是在大型數(shù)據(jù)讀取時(shí)非常明顯。我曾經(jīng)從數(shù)據(jù)庫(kù)中讀取過100萬(wàn)個(gè)數(shù)據(jù),用cellarray時(shí)用了16s,但是用numeric時(shí)卻只用了8s,速度提高很大啊,對(duì)電腦配置不好的來(lái)說,很有幫助的。(還有我的電腦很爛,1.3GHz,384M內(nèi)存,可能讓大家見笑了…….)
調(diào)用格式:
setdbprefs(‘datareturnformat’,’numric’)
6.??????養(yǎng)成良好習(xí)慣,隨手關(guān)閉鏈接對(duì)象和游標(biāo)——close
當(dāng)不再使用數(shù)據(jù)庫(kù)的鏈接對(duì)象時(shí)要及時(shí)關(guān)閉,這樣才能及時(shí)的釋放出內(nèi)存,而且每次鏈接后所需要的內(nèi)存量是非常大的,要是不及時(shí)關(guān)閉的話對(duì)后續(xù)計(jì)算的影響將非常非常的大。(?針對(duì)爛機(jī)子而言,要是你的電腦超強(qiáng)也無(wú)所謂的…..)
調(diào)用格式:
close(curs)
close(conna)
7.??????查看數(shù)據(jù)相關(guān)信息
Rows-查看數(shù)據(jù)行數(shù)
調(diào)用格式:numrows=rows(curs)
Cols——查看數(shù)據(jù)列數(shù)
調(diào)用格式:numcols=cols(curs)
Attr——查看數(shù)據(jù)屬性
調(diào)用格式:attribute=attr(curs)
?
第二部分:把數(shù)據(jù)寫入到數(shù)據(jù)庫(kù)中
8.??????添加數(shù)據(jù)到表中——insert函數(shù)
調(diào)用格式:
insert(conna,’tab’,colnames,exdata)
conna——鏈接對(duì)象
tab——數(shù)據(jù)庫(kù)文件的表名
colnames——數(shù)據(jù)庫(kù)表的列名
exdata——matlab變量
如:insert(conna,'try',{'a1', 'a2'},[45 65])
????commit(conna)%確認(rèn)數(shù)據(jù)更改
9.??????更新數(shù)據(jù)庫(kù)中的數(shù)據(jù)——update
調(diào)用格式:
update(conna,’tab’,colnames,exdata,’whereclause’)
conna——鏈接對(duì)象
tab——數(shù)據(jù)庫(kù)文件的表名
colnames——數(shù)據(jù)庫(kù)表的列名
exdata——matlab變量
whereclause——SQL的where字句
如:update(conna,'try',{'a1','a2'},[45 65],’where XX=’XX’’)
commit(conna)%確認(rèn)數(shù)據(jù)更改
10.??建立新表——exec,creat table
調(diào)用格式:
conna=database('SampleDB','','');
exec(conna,['createtable Table(name string,age int)']);
close(conna);
總結(jié)
以上是生活随笔為你收集整理的matlab 与数据库操作的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用Matlab实现字符串分割(split
- 下一篇: 如何开启mysql计划事件