全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
5445 0
2008-11-28

目的:

做研究离不开数据,bloomberg现在是全球最好的资讯系统之一,有庞大的数据,s-plus 8 提供了financedb模块可以方便地提取数据,教你如何从bloomberg提取数据放入数据库。

环境准备:

有一台bloomberg终端;
安装s-plus,并安装了financedb模块;
配置好odbc连接串。

过程分析:
利用s-plus的financedb模块提供的函数从bloomberg终端的dde server提取数据,并写入数据库。

源代码实现:
从bloomberg终端提取恒生指数的成分明细以及成份股权重,放入数据库。

假设:
配置的odbc连接串dns为oracle_odbc;
数据库表index_weight有字段:index_name,dt,bloomberg_id,weight

源代码如下:
#//////////////////////////////////////////////////////////////////////////////////////////////////////

#开启链接
openDBConnection()

#设定ODBC连接串
vODBCString <- "DSN=oracle_odbc;UID=你的用户名;PWD=你的密码; server=Oracle监听名"

#get hsi index member weight from bloomberg dde server
outData <- import.data.bloomberg("Bulk", c("hsi index"),
   c("INDX_MWEIGHT"), "", "", "Now", "Now", "Day",
   "Chronological", "BLP.EXE")

#import into database
for (j in 1:length(outData[, 1]))
{
 #deal with the outData
 if (is.character(outData[j, 1]))
 {
  if (regexpr("#N/A", outData[j, 1])[1] > 0)
  {
   outData[j, 1] <- " "
  }
  
 }
 
 if (is.character(outData[j, 2]))
 {
  if (regexpr("#N/A", outData[j, 2])[1] > 0)
  {
   outData[j, 2] <- 0
  }
  
 }
 
 #merge parameter 
 SqlStr = "insert into index_weight (index_name,dt,bloomberg_id,weight) values("
 SqlStr = paste(SqlStr, "\'hsi\',\'20081128\',trim(\'",
    outData[j, 1], "\'),", outData[j, 2] / 100, ")")
 
 #import into database
 SQL <- importData(type="ODBC", odbcConnection=vODBCString,
    odbcSqlQuery=SqlStr)
}

#drop variable
rm(SqlStr)
rm(outData)
rm(SQL)

#关闭连接
closeDBConnection()

#//////////////////////////////////////////////////////////////////////////////////////////////////////

更多的使用方法可以参考s-plus的financedb模块的帮助。

有问题可以联系www.jinronq.com,金融圈。

[此贴子已经被作者于2008-11-28 16:44:54编辑过]

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群