sql-server – 在SQL Server中创建测试数据
发布时间:2020-05-25 03:14:12 所属栏目: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列的表,所以我是一个快速的一个简单的脚本,可以重新使用. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
