sql-server – 在SQL Server中创建测试数据
发布时间:2020-12-12 08:47:27 所属栏目:MsSql教程 来源:网络整理
导读:有没有人拥有或知道一个SQL脚本将生成给定表的测试数据? 理想情况下,它将查看表的模式,并根据每列的数据类型创建具有测试数据的行. 如果这不存在,其他人会发现它有用吗?如果是这样,我会拉出我的手指写一个. 解决方法 那么我以为我会把我的手指拉出来,给自己
有没有人拥有或知道一个SQL脚本将生成给定表的测试数据?
理想情况下,它将查看表的模式,并根据每列的数据类型创建具有测试数据的行. 如果这不存在,其他人会发现它有用吗?如果是这样,我会拉出我的手指写一个. 解决方法那么我以为我会把我的手指拉出来,给自己写一个轻量级的数据生成器:declare @select varchar(max),@insert varchar(max),@column varchar(100),@type varchar(100),@identity bit,@db nvarchar(100) set @db = N'Orders' set @select = 'select ' set @insert = 'insert into ' + @db + ' (' declare crD cursor fast_forward for select column_name,data_type,COLUMNPROPERTY( OBJECT_ID( TABLE_SCHEMA + '.' + TABLE_NAME),COLUMN_NAME,'IsIdentity') AS COLUMN_ID from Northwind.INFORMATION_SCHEMA.COLUMNS where table_name = @db open crD fetch crD into @column,@type,@identity while @@fetch_status = 0 begin if @identity = 0 or @identity is null begin set @insert = @insert + @column + ',' set @select = @select + case @type when 'int' then '1' when 'varchar' then '''test''' when 'nvarchar' then '''test''' when 'smalldatetime' then 'getdate()' when 'bit' then '0' else 'NULL' end + ',' end fetch crD into @column,@identity end set @select = left(@select,len(@select) - 1) set @insert = left(@insert,len(@insert) - 1) + ')' exec(@insert + @select) close crD deallocate crD 给定任何表,脚本将为类型创建一个具有某些任意值的记录; int,varchar,nvarchar,smalldatetime和bit. case语句可以替换为一个函数.它不会向下依赖关系,但会跳过任何种子列. 我创建这个的动机是测试我的NHibernate映射文件与一个具有50列的表,所以我是一个快速的一个简单的脚本,可以重新使用. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |