初始化数据库数据的一些例子


  1. /****  
  2. 生成机票库测试数据  
  3. @author zdw  
  4. *****/  
  5. ALTER proc [dbo].[init_all]  
  6. as  
  7. --城市数据    
  8. exec dbo.init_city  
  9. --机场数据   
  10. exec dbo.init_airport  
  11. --航空公司   
  12. exec dbo.init_airline  
  13. --其他基础数据   
  14. exec dbo.init_other  
  15. --航班   
  16. exec dbo.init_flight  
  17. --机票与预订   
  18. exec dbo.init_ticket  
  19. ---生成账期账单数据   
  20. exec  dbo.init_airtranhis  

 
  1. /**  
  2. 随机生成指定位数的数字字符串的存储过程  
  3. @author ZDW  
  4. @createtime 2012-01-05  
  5. ***/  
  6. ALTER PROC [dbo].[p_randomN]  
  7. @count INT=18  
  8. as  
  9.  SELECT RIGHT(20000 + CONVERT(bigintABS(CHECKSUM(NEWID()))), @count)  

 
  1. ALTER  PROC [dbo].[p_randomName]  
  2. @name VARCHAR(20)='' OUTPUT  
  3.   as     
  4.   BEGIN  
  5.         declare @firstNames varchar(max)    /* 保存名的集合 */  
  6.         declare @lastNames varchar(max)     /* 保存姓的集合 */  
  7.         set @firstNames = '梅,芳,海,亮,红,君,军,俊,江,河,湖,波,杰,山,燕,阳,洋,涛,斌,彬,宾,微,伟,威,薇,刚,倩' /* 必须只有一个字 */  
  8.         set @lastNames = '刘,方,王,李,赵,孙,钱,胡,易,黄,温,丁,周,魏,陈,曾,涂'    /* 必须只有一个字 */  
  9.         declare @lastNamesLength int  
  10.         declare @firstNamesLength int  
  11.         set @lastNamesLength = (LEN(@lastNames) - 1) / 2 + 1  
  12.         set @firstNamesLength = (LEN(@firstNames) - 1) / 2 + 1  
  13.            
  14.         declare @firstNameRandom int  
  15.         declare @lastNameRandom int  
  16.            
  17.         declare @resultFullNames varchar(max)  
  18.         set @resultFullNames = ''  
  19.            
  20.   
  21.             set @firstNameRandom = CEILING(rand()*@firstNamesLength)  
  22.             set @lastNameRandom = CEILING(rand()*@lastNamesLength)  
  23.             /*  
  24.                 产生第 1 个字,对于的 Index 为 1,注意:这里的 Index 最小值为 1。  
  25.                 产生第 2 个字,对于的 Index 为 3,  
  26.                 产生第 3 个字,对于的 Index 为 5,  
  27.                 ...  
  28.             */  
  29.             set @resultFullNames = @resultFullNames + ( SUBSTRING(@lastNames, @lastNameRandom * 2 - 1, 1) + SUBSTRING(@firstNames, @firstNameRandom * 2 - 1, 1))  
  30.         SET @name=@resultFullNames  
  31.         --SELECT @name   
  32.   end     

 
  1. /***行程单表生成测试数据开始***/  
  2. TRUNCATE TABLE Travelroute  
  3. DECLARE @i INT=1,@sn VARCHAR(50),@random INT=1,@emid varchar(50)  
  4. WHILE @i <= 2000  
  5. BEGIN  
  6.     --生成10位编号   
  7.     SELECT @sn=right('0000000000'+cast(@i as varchar),10)  
  8.     --生成1-100内的随机整数   
  9.     select @random=cast( floor(rand()*100) as int)  
  10.     select top 1 @emid=emid from expressmail order by NEWID()  
  11.     INSERT Travelroute(tlid,emid,sn,batsn,createtime,usid,fee,status)  
  12.     SELECT REPLACE(LOWER(NEWID()),'-',''),@emid,@sn,'001',GETDATE(),1,@random*100,1  
  13.     SET @i = @i +1  
  14. END  
  15. SELECT * FROM Travelroute   
  16. /***行程单表生成测试数据结束***/  
  17.   
  18. /***旅客表生成测试数据开始***/  
  19. TRUNCATE TABLE Passenger  
  20. DECLARE @name VARCHAR(10),@ic VARCHAR(50),@phone VARCHAR(20)  
  21.  set  @i =0  
  22. WHILE @i <= 1000  
  23. BEGIN  
  24.      --生成18位身份证号码   
  25.       select top 1 @ic=(abs(checksum(newid()))%9+1)*100000000000000000+abs(checksum(newid()))%100000000000000000  
  26.         from sysobjects  
  27.     --生成11位手机号   
  28.     select top 1 @phone=(abs(checksum(newid()))%9+1)*10000000000+abs(checksum(newid()))%10000000000  
  29.     --生产随机姓名   
  30.     EXEC p_randomName @name OUTPUT  
  31.     INSERT Passenger(psid,name,type,sn,phone,ptype,birth,psid2)  
  32.     SELECT REPLACE(LOWER(NEWID()),'-',''),@name,1,@ic,@phone,1,null,0  
  33.     SET @i = @i +1  
  34. END  
  35. SELECT * FROM Passenger   
  36. /***旅客表生成测试数据结束***/  

相关内容