欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件高级功能研发区 → 如何快速的只把股票历史数据写入SQL server数据库

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有3009人关注过本帖树形打印复制链接

主题:如何快速的只把股票历史数据写入SQL server数据库

帅哥哟,离线,有人找我吗?
sword8586
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:388 积分:0 威望:0 精华:0 注册:2014/11/22 18:13:16
如何快速的只把股票历史数据写入SQL server数据库  发帖心情 Post By:2021/5/17 12:02:55 [只看该作者]

老师好,如题:
1、快速写入股票,只要股票的历史数据,不要债券等的历史数据写入SQL SERVER数据库
2、我的VBA方法太慢,请老师帮忙改改,提高写入速度。谢谢。、
sub SQL_Con1()
  application.MsgOut Date &" " &Time& "检索股票名称及代码"
Dim marketName
marketName=Array("SZ","SH")'此处只查上海及深圳A股"SZ","SH"。不查期货市场"SQ","DQ","ZQ","ZJ",
'找到股票的代码及名称
dim markets
For j=0 To UBound(marketName)
markets=marketName(j)'某一市场名称
n=marketData.GetReportCount(markets)'某一市场名称下股票或商品的数量
For i=0 To n-1
                            Set reportData=marketdata.GetReportDataByIndex(markets,i)'某一市场名称下某种(i号)股票或商品的所有信息(代码、名称等)
     Dim Table_name,Code,Open,Close,High,Low,Date
     table_name1="M1_"+reportData.Label
     '=====================================================================================================    
     dim cn,rs
     Set cn = CreateObject("Adodb.Connection")
     Set rs = CreateObject("Adodb.Recordset")  
     '连接数据库``
     strCn="Provider=sqloledb;Server=高大\MYSQL;Database=MyStocK;Uid=sa;Pwd=88888888;" 
     cn.Open strCn
     strfield1 ="[OpenD] [varchar](53) NOT NULL,[CloseD] [varchar](53) NOT NULL,[StockO] [float](53) NULL,[StockC] [float](53) NULL,[StockH] [float](53) NULL,[StockL] [float](53) NULL,[StockV] [float](53) NULL,[StockOI] [float](53) NULL"
                 strsqlcre ="CREATE TABLE [dbo].["+ table_name1 + "]("+strfield1+")"
        cn.Execute(strsqlcre)
     strSQL ="select * from ["&table_name1&"]"   '定义SQL查询命令字符串   
     rs.Open strSQL,cn,1,3 '执行strSQL所含的SQL命令,结果保存在rs记录集对象中
     '调入调试数据,4 60分钟 
     set qtzq= marketdata.GetHistoryData(reportData.Label,marketName(j),0)'周期类型:0 1分钟,1 5分钟,2 15分钟,3 30分钟,4 60分钟,5日线,6周线,7月线,8年线,9多日线,10分笔成交,11多小时线,12多秒线,13多分钟线,14季度线,15半年线,16节气线,17 3分钟,18 10分钟,19 多笔线 
                        for ii=0 to qtzq.Count-1                    
                        rs.addnew 
                        rs("OpenD")=DateAdd("n", -1, qtzq.Date(ii))
                        rs("CloseD")=qtzq.Date(ii)
                        rs("StockO")=CSng(qtzq.Open(ii))
                        rs("StockC")=CSng(qtzq.Close(ii))
                        rs("StockH")=CSng(qtzq.High(ii))
                        rs("StockL")=CSng(qtzq.Low(ii))
                        rs("StockV")=CSng(qtzq.Volume(ii))
                        rs("StockOI")=CSng(qtzq.OpenInt(ii))  
  rs.update                                                                                    
  next                 
    rs.close
  cn.Close '关闭数据库链接,释放资源
  Set cn = Nothing'释放连接
next
next
    MSGBOX "table text1表已存在"    

end sub 

 回到顶部
帅哥哟,离线,有人找我吗?
sword8586
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:388 积分:0 威望:0 精华:0 注册:2014/11/22 18:13:16
  发帖心情 Post By:2021/5/17 12:08:56 [只看该作者]

sub SQL_Con1()
application.MsgOut Date &" " &Time& "检索股票名称及代码"
Dim marketName
marketName=Array("SZ","SH")'此处只查上海及深圳A股"SZ","SH"。不查期货市场"SQ","DQ","ZQ","ZJ",
'找到股票的代码及名称
dim markets
For j=0 To UBound(marketName)
markets=marketName(j)'某一市场名称
n=marketData.GetReportCount(markets)'某一市场名称下股票或商品的数量
For i=0 To n-1
     Set reportData=marketdata.GetReportDataByIndex(markets,i)'某一市场名称下某种(i号)股票或商品的所有信息(代码、名称等)
     Dim Table_name,Code,Open,Close,High,Low,Date
     table_name1="M1_"+reportData.Label
     '===================================================================================================== 
     dim cn,rs
     Set cn = CreateObject("Adodb.Connection")
     Set rs = CreateObject("Adodb.Recordset")  
     '连接数据库``
     strCn="Provider=sqloledb;Server=高大\MYSQL;Database=MyStocK;Uid=sa;Pwd=88888888;" 
     cn.Open strCn
     strfield1 ="[OpenD] [varchar](53) NOT NULL,[CloseD] [varchar](53) NOT NULL,[StockO] [float](53) NULL,[StockC] [float](53) NULL,[StockH] [float](53) NULL,[StockL] [float](53) NULL,[StockV] [float](53) NULL,[StockOI] [float](53) NULL"
     strsqlcre ="CREATE TABLE [dbo].["+ table_name1 + "]("+strfield1+")"
cn.Execute(strsqlcre)
     strSQL ="select * from ["&table_name1&"]"   '定义SQL查询命令字符串   
     rs.Open strSQL,cn,1,3 '执行strSQL所含的SQL命令,结果保存在rs记录集对象中
     '调入调试数据,4 60分钟  
     set qtzq= marketdata.GetHistoryData(reportData.Label,marketName(j),0)'周期类型:0 1分钟,1 5分钟,2 15分钟,3 30分钟,4 60分钟,5日线,6周线,7月线,8年线,9多日线,10分笔成交,11多小时线,12多秒线,13多分钟线,14季度线,15半年线,16节气线,17 3分钟,18 10分钟,19 多笔线 
     for ii=0 to qtzq.Count-1
     rs.addnew 
     rs("OpenD")=DateAdd("n", -1, qtzq.Date(ii))
     rs("CloseD")=qtzq.Date(ii)
     rs("StockO")=CSng(qtzq.Open(ii))
     rs("StockC")=CSng(qtzq.Close(ii))
     rs("StockH")=CSng(qtzq.High(ii))
     rs("StockL")=CSng(qtzq.Low(ii))
     rs("StockV")=CSng(qtzq.Volume(ii))
     rs("StockOI")=CSng(qtzq.OpenInt(ii))    
     rs.update                              
next
rs.close
cn.Close '关闭数据库链接,释放资源
Set cn = Nothing'释放连接 
next 
next
    MSGBOX "table text1表已存在"
end sub 

 回到顶部
帅哥哟,离线,有人找我吗?
yukizzc
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:21598 积分:0 威望:0 精华:1 注册:2010/7/31 16:35:30
  发帖心情 Post By:2021/5/17 21:09:47 [只看该作者]

抱歉,这边不提供数据导出相关的技术服务的


 回到顶部
帅哥哟,离线,有人找我吗?
sword8586
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:388 积分:0 威望:0 精华:0 注册:2014/11/22 18:13:16
  发帖心情 Post By:2021/5/18 10:19:04 [只看该作者]

谢谢您。我就用Dll处理吧。

 回到顶部