目的:
做研究离不开数据,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编辑过]