有没有人拥有或知道一个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列的表,所以我是一个快速的一个简单的脚本,可以重新使用.