主题:如何把数据库拆分成以年月组成的数据库???
			 vfp学生
				 [专家分:0]  发布于 2009-08-04 21:52:00
 vfp学生
				 [专家分:0]  发布于 2009-08-04 21:52:00							
			各位老师:如题,怎么做才能完成?
例如:
数量          日期
200                  2009-01-01
100                  2009-01-02
500                  2009-02-03
700                  2009-03-03
800                  2009-05-15
现在这个数据库很大,查询起来要等好几分钟,速度太慢,在论坛上看到有人说每月生成一个数据库,然后再按条件查询,请问用什么命令可以把这个庞大的数据拆分开!谢谢!
						
					 
		
			
回复列表 (共2个回复)
		
								
				沙发
				
					 homayzh [专家分:7040]  发布于 2009-08-04 23:58:00
homayzh [专家分:7040]  发布于 2009-08-04 23:58:00				
				你的数据 表是现成的??
我的办法是
use 表文件
copy stru to 1月份
use 1月份
appe from 表文件 for month(日期)=1 and year(日期)=2009
.....
.....
.....
也可以用循环。。
。这是最笨的办法
							 
						
				板凳
				
					 lbscyb [专家分:4780]  发布于 2009-08-13 00:58:00
lbscyb [专家分:4780]  发布于 2009-08-13 00:58:00				
				如果表的字段“日期”是字符型的,这样处理
select SUBSTR(ALLTRIM(日期),1,4) + SUBSTR(ALLTRIM(日期),6,1) as databasename ;
   from 数据源表 into cursor DBName  &&将日期处理成只含年和月的数据
select databasename from  DBName group by databasename into cursor cListName  
&&按年月分组
*-生成按年月命名的表(如 DBF200908),路径是默认路径
select cListName
scan 
cYearMonth = alltrim(cListName.databasename)
cDbfName = "DBF" + cYearMonth
select * from 数据源表 where !dele() and  SUBSTR(ALLTRIM(日期),1,4) + SUBSTR(ALLTRIM(日期),6,1) = cYearMonth into dbf &cDbfName
endscan
							 
									
			
我来回复