Kei*_*oom 9 sql-server testing
有没有人知道或者知道将为给定表生成测试数据的SQL脚本?
理想情况下,它将查看表的模式,并根据每列的数据类型创建包含测试数据的行.
如果这不存在,其他人会发现它有用吗?如果是这样的话,我会把手指伸出来写一个.
Kei*_*oom 14
好吧,我以为我会拉出手指,给自己写一个轻量级数据生成器:
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, @type, @identity
end
set @select = left(@select, len(@select) - 1)
set @insert = left(@insert, len(@insert) - 1) + ')'
exec(@insert + @select)
close crD
deallocate crD
Run Code Online (Sandbox Code Playgroud)
给定任何表,脚本将创建一个记录,其中包含类型的任意值; int,varchar,nvarchar,smalldatetime和bit.case语句可以用函数替换.它不会向下移动依赖关系,但它会跳过任何种子列.
我创建这个的动机是针对一个包含大约50列的表测试我的NHibernate映射文件,所以我在快速简单的脚本之后可以重复使用.