matlab提取wind底層數據庫操作


首先需要安裝navicat for SQL server 軟件,

為了實現Matlab 通過JDBC方式連接Sqlserver數據庫, 需要安裝Sqlserver JDBC驅動. 地址: 

https://blog.csdn.net/yinxing408033943/article/details/7677769

在navicat for SQL server進行試驗, 登陸輸入用戶名,

新建查詢,一個簡單的查詢例子

 送上Navicat sql 的一些快捷鍵:

 ctrl + /: 注釋

 ctrl + shift + /: 取消注釋

 ctrl + l: 刪除一行

 

在matlab中實現如下: 新建一個函數getConn()

%連接數據庫獲取數據
function conn=getConn()
% 數據庫url
databaseurl='jdbc:sqlserver://10.2.224.56:1433;database=newwind';  %根據需要自行修改
% jdbc驅動
driver='com.microsoft.sqlserver.jdbc.SQLServerDriver'; %driver
% 登錄名
username='***';
% 密碼
password='****';
% 數據源名稱
databasename='newwind';
% 得到與數據庫的連接
conn = database(databasename,username,password,driver,databaseurl);

% % 如果未連接成功,拋出錯誤並顯示原因
% if ~isconnection(conn)
%     error('與數據庫''%s''連接失敗:%s', databasename, conn.Message);
% end

 

接着, 新建一個腳本get_data

tt1='''20160930'',''20161231''';
code_sql='''000001.SZ'',''002808.SZ''';
conn=getConn();
sql=['select s.report_period ,s.s_info_windcode,a.s_fa_eps_basic,a.TOT_OPER_REV ',...
' from (select DISTINCT t.report_period,t.s_info_windcode from ASHAREINCOME t',... 
[' where t.report_period IN(',tt1],...
[')and t.s_info_windcode IN (',code_sql],...
')) s full join (SELECT  report_period,s_info_windcode,s_fa_eps_basic ,TOT_OPER_REV',...
[' from ASHAREINCOME where report_period IN(',tt1],...
[') and statement_type=''408001000''and s_info_windcode IN (',code_sql],...
')) a on  s.report_period=a.report_period and s.s_info_windcode=a.s_info_windcode',...
' order by s.s_info_windcode, s.report_period'];

curs = exec(conn,sql);
curs = fetch(curs);
data_try= curs.Data; 
size(data_try)

得到結果

!!!注意:wind賬號一般由公司提供, 且只能在公司內部網才可以用.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM