sql-server – 在SQL Server中创建测试数据

前端之家收集整理的这篇文章主要介绍了sql-server – 在SQL Server中创建测试数据前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
有没有人拥有或知道一个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列的表,所以我是一个快速的一个简单的脚本,可以重新使用.

原文链接:https://www.f2er.com/mssql/75376.html

猜你在找的MsSQL相关文章