本人业余时间喜欢炒炒外汇,小打小闹的赚不到什么钱,研究了诸多网上流传的方法,发现最后还是一场空,最近准备把赌博上用的方法借鉴到外汇的K线量化操作上来,想写个小工具测试测试,本来用excel就完全可以实现的,无奈excel的局限性太大,十几万行的数据就慢的要死,打开一下都得几十分钟,于是想着用数据库试试,但是我对数据库一窍不通,不知道哪个数据库可以做出来简单的窗体,还能容纳几十亿行甚至几百亿行的数据呢?access的数据容量不够。上excel的界面截图,其实很简单的,主要是下面的BP排列组合太多,数据量太大,希望不需要用到数据库结合编程软件才能搞定吧?
另外请大神帮忙写一个在sql server里计算出BP组成的全部排列与组合的表,条件是B+P的数量等于32,B可以是0个,P也可以是0个,全部组合数量大概是42亿多,这么大的数据量在sql server里不知道一张表可否容纳。
新人,分不多,请大神们不要介意,不胜感激。
------解决思路----------------------
VFP,是有开发的 IDE,也有数据库的支持,现在普遍的开发工具和数据库都独立了。
如果你有时间的话,建议学习一种开发语言,比如 .net 就挺好。 数据库先用 sql server ,后期的话可以再接触一下别的。
------解决思路----------------------
生成数据简单主要是后面你计慢。
DECLARE @sql NVARCHAR(max)
DECLARE @i INT=0;
SET @sql='create table t( id long identity(1,1) '
WHILE @i<28
BEGIN
SET @sql+=',col'+CAST(@i AS NVARCHAR(10))+' char(1)';
SET @i+=1;
END
SET @sql+=');';
--exec(@sql);
DECLARE @sql2 NVARCHAR(max);
DECLARE @sel NVARCHAR(max)='';
DECLARE @crs NVARCHAR(max)='';
DECLARE @sqlexec NVARCHAR(max)='';
DECLARE @j INT=1
SET @sql2='
;WITH a AS (
SELECT ''B'' AS n UNION ALL SELECT ''P''
),b AS (
';
SET @sel='select a0.n as col0 ';
WHILE @j<28
BEGIN
SET @sel+=',a'+CAST(@j AS VARCHAR(10))+'.n as col'+CAST(@j AS VARCHAR(10))+' ';
SET @crs+='cross join a a'+CAST(@j AS VARCHAR(10))+'
'
SET @j+=1;
END
SET @sqlexec=@sql2+@sel+'from a a0'+@crs+'
)
insert into t select * from b;
';
--EXEC(@sqlexec);
把两个注释的地方放开,电脑卡死了不要找我。
多谢大神,昨天连续回复了三个帖子之后不让回复了,这论坛真死板,以上代码在新建查询里执行之后,显示命令已成功完成,但是并没有建立任何表格出来啊,请告知如何使用,谢谢。
上面有两个sql看到没有。
如果都执行了很久,而且显示不报错,应该ok
你查看表是不是建在master 下面对去了。
你select top 100 * from t;