加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

动态生成表的测试数据

发布时间:2020-12-12 15:46:47 所属栏目:MsSql教程 来源:网络整理
导读:经常要对一个空表添加数据,下面是自动添加测试数据的例子。以sqlserver 为例 1、要生成数据的表 ? ? create table T_INDUSTRY_FINANCE_INSTANCE ( ?? ID_????????????????? varchar(32)????????? not null, ?? ARTIFICIAL_PERSON_CODE_ varchar(200)???????

经常要对一个空表添加数据,下面是自动添加测试数据的例子。以sqlserver 为例

1、要生成数据的表

?

?

create table T_INDUSTRY_FINANCE_INSTANCE (
?? ID_????????????????? varchar(32)????????? not null,
?? ARTIFICIAL_PERSON_CODE_ varchar(200)???????? null,
?? COMPANY_NAME_??????? varchar(200)???????? null,
?? STORAGE_BEGINNING_YEAR_ double precision???? null,
?? ASSETS_LIABILITIES_ENDYEAR_ double precision???? null,
?? INCREASE_DECREASE_?? double precision???? null,
?? PAY_WELFARE_ADDEDVALUETAX_ double precision???? null,
?? GROSS_INVEST_??????? double precision???? null,
?? CASH_FLOW_?????????? double precision???? null,
?? OUGHT_TAX_APPEND_??? double precision???? null,
?? REALITY_TAX_APPEND_? double precision???? null,
?? AVERAGE_WORKER_YEAR_ double precision???? null,
?? YEAR_??????????????? varchar(20)????????? null,
?? SEASON_????????????? varchar(20)????????? null,
?? MONTH_?????????????? varchar(20)????????? null,
?? constraint PK_T_INDUSTRY_FINANCE_INSTANCE primary key (ID_)
)
go

?

?

2、存储过程生成里面的varchar?类型的数据?(double 型的太多,第三步用游标来生成,这里省略了CREATE PROCEDURE name as..
)
????

? declare @sqltext varchar(8000),@i int,@acount int
set? @acount=1000000
SELECT?? @i?? =?? 0
? WHILE(@i<@acount)
begin
?set @sqltext = convert(varchar(12),@i)+''','''+convert(varchar(12),'''+'t'+convert(varchar(12),ceiling(10*rand()))+''',(@i%4+1))+''',(@i%12+1))
?if @sqltext<>''
begin
???? set @sqltext='insert into t_industry_finance_instance(ID_,ARTIFICIAL_PERSON_CODE_,COMPANY_NAME_,YEAR_,SEASON_,MONTH_) values(
'''+@sqltext+''')';
print @sqltext
exec(@sqltext)
???? set @sqltext=''
end
??? select @i=@i+1
end


?

?

3、用游标生成里面的double类型的数据?


Declare @Id varchar(20)
Declare @Name varchar(20)
--@Name没有用这里
Declare Cur Cursor For
select id_,COMPANY_NAME_ from t_industry_finance_instance
Open Cur
Fetch next From Cur Into @Id,@Name
While @@fetch_status=0
Begin
if(@Id%4=0)
update? t_industry_finance_instance? set STORAGE_BEGINNING_YEAR_=10000*rand(),ASSETS_LIABILITIES_ENDYEAR_=1000*rand(),INCREASE_DECREASE_=1050*rand(),PAY_WELFARE_ADDEDVALUETAX_=2050*rand(),GROSS_INVEST_=1750*rand(),CASH_FLOW_=3050*rand(),OUGHT_TAX_APPEND_=5050*rand(),REALITY_TAX_APPEND_=4550*rand(),AVERAGE_WORKER_YEAR_=6050*rand(),YEAR_='2006' where
id_=@Id
else if(@Id%4=1)
update? t_industry_finance_instance? set STORAGE_BEGINNING_YEAR_=10000*rand(),YEAR_='2007' where
id_=@Id
else if(@Id%4=2)
update? t_industry_finance_instance? set STORAGE_BEGINNING_YEAR_=10000*rand(),YEAR_='2008' where
id_=@Id
else
update? t_industry_finance_instance? set STORAGE_BEGINNING_YEAR_=10000*rand(),YEAR_='2009' where
id_=@Id
Fetch Next From Cur Into @Id,@Name End Close Cur Deallocate Cur

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读