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