测试时,经常需要生成大量数据来测试系统性能,此功能可以用存储过程快速生成。

1. 随机生成日期

  1. DECLARE @Date_start datetime
  2. DECLARE @Date_end datetime
  3. SET @Date_start= '1930-01-01'
  4. SET @Date_end=getdate()
  5. select @birthDate=dateadd(minute,abs(checksum(newid()))%(datediff(minute,@Date_start,@Date_end)+1),@Date_start)

2. 随机从给定的若干值中挑选一个(例如随机生成性别)

  1. DECLARE @sex NVARCHAR(10)
  2. SET @sex= CONVERT(NVARCHAR,cast( RAND()*3 as int))
  3. IF @sex=''
  4. SET @sex='Male';
  5. ELSE IF
  6. @sex=''
  7. SET @sex='Female';
  8. ELSE IF @sex=''
  9. SET @sex=NULL;

3. 生成编号

  1. DECLARE @subCode_base NVARCHAR(30)
  2. DECLARE @barcode NVARCHAR(30)
  3. SET @subCode_base='AutoSubCode_'
  4. SET @subCode=@subCode_base+CONVERT(NVARCHAR,@index)

4. 单表插入存储过程

  1. CREATE PROCEDURE [dbo].[add_SubjectInfo]
  2. AS
  3. DECLARE @subCode_base NVARCHAR(30)
  4. DECLARE @barcode_base NVARCHAR(30)
  5. DECLARE @birthDate datetime
  6. DECLARE @sex NVARCHAR(10)
  7. DECLARE @fullName_base NVARCHAR(30)
  8. DECLARE @mortalityStatus NVARCHAR(30)
  9. DECLARE @reserved NVARCHAR(10)
  10. DECLARE @recordCreateDate datetime
  11. DECLARE @recordCreator INTEGER
  12.  
  13. DECLARE @count INTEGER
  14. DECLARE @index INTEGER
  15.  
  16. DECLARE @subCode NVARCHAR(30)
  17. DECLARE @barcode NVARCHAR(30)
  18. DECLARE @fullName NVARCHAR(30)
  19.  
  20. DECLARE @Date_start datetime
  21. DECLARE @Date_end datetime
  22.  
  23. SET @subCode_base='AutoSubCode_'
  24. SET @barcode_base='AutoBM_'
  25.  
  26. SET @Date_start= '1930-01-01'
  27. SET @Date_end=getdate()
  28.  
  29. SET @fullName_base='AutoFullName_'
  30. SET @recordCreateDate=GETDATE()
  31. SET @recordCreator=22
  32. -- 调整生成的条数=@count-@index
  33. SET @count=10
  34. SET @index=1
  35.  
  36. WHILE @index<@count
  37. BEGIN
  38. -- 生产编号
  39. SET @subCode=@subCode_base+CONVERT(NVARCHAR,@index)
  40. SET @barcode=@barcode_base+CONVERT(NVARCHAR,@index)
  41. SET @fullName=@fullName_base+CONVERT(NVARCHAR,@index)
  42.  
  43. -- 随机生成性别 Male/Female/空
  44. SET @sex= CONVERT(NVARCHAR,cast( RAND()*3 as int))
  45. IF @sex=''
  46. SET @sex='Male';
  47. ELSE IF
  48. @sex=''
  49. SET @sex='Female';
  50. ELSE IF @sex=''
  51. SET @sex=NULL;
  52.  
  53. -- 随机生成存活状态 Dead/Alive/空
  54. SET @mortalityStatus = CONVERT(NVARCHAR,cast( RAND()*3 as int))
  55. IF @mortalityStatus=''
  56. SET @mortalityStatus='Dead';
  57. ELSE IF
  58. @mortalityStatus=''
  59. SET @mortalityStatus='Alive';
  60. ELSE IF @mortalityStatus=''
  61. SET @mortalityStatus=NULL;
  62.  
  63. -- 随机生成Reserved状态 Yes/No/空
  64. SET @reserved = CONVERT(NVARCHAR,cast( RAND()*3 as int))
  65. IF @reserved=''
  66. SET @reserved='Yes';
  67. ELSE IF
  68. @reserved=''
  69. SET @reserved='No';
  70. ELSE IF @reserved=''
  71. SET @reserved=NULL;
  72. -- 随机生产日期
  73. select @birthDate=dateadd(minute,abs(checksum(newid()))%(datediff(minute,@Date_start,@Date_end)+1),@Date_start)
  74.  
  75. INSERT INTO subject(subject_code,barcode, birth_date,sex, full_name,mortality_status,reserved, record_create_date,record_creator)
  76. VALUES (@subCode, @barcode,@birthDate,@sex,@fullName,@mortalityStatus,@reserved,@recordCreateDate,@recordCreator)
  77.  
  78. SET @index=@index+1
  79. END

5 多表插入存储过程

  1. USE [bio-d]
  2. GO
  3. /****** Object: StoredProcedure [dbo].[add_SubjectAndSubjectStudyInfo] Script Date: 2018/8/23 14:30:45 ******/
  4. SET ANSI_NULLS ON
  5. GO
  6. SET QUOTED_IDENTIFIER ON
  7. GO
  8. ALTER PROCEDURE [dbo].[add_SubjectAndSubjectStudyInfo]
  9. AS
  10. -- 公用参数
  11.  
  12. DECLARE @subid_index INTEGER -- 获取Subject 表的最大id+1 作为添加的患者编号后缀起点
  13. DECLARE @count INTEGER -- 用户作为循环的跳出条件
  14. DECLARE @insertRow INTEGER -- 一次需要插入的条数
  15.  
  16. SET @insertRow=10000
  17. -- 调整生成的条数=@count-@index
  18. SET @subid_index=((select max(id) from subject)+1) --需要更换为动态的
  19. SET @count=@subid_index+@InsertRow
  20.  
  21. -- 插入Subject
  22. DECLARE @sub_code_base NVARCHAR(30)
  23. DECLARE @sub_barcode_base NVARCHAR(30)
  24. DECLARE @sub_birthdate DATETIME
  25. DECLARE @sub_sex NVARCHAR(10)
  26. DECLARE @sub_fullName_base NVARCHAR(30)
  27. DECLARE @sub_mortalityStatus NVARCHAR(30)
  28. DECLARE @sub_reserved NVARCHAR(10)
  29. DECLARE @sub_recordCreateDate DATETIME
  30. DECLARE @sub_recordCreator INTEGER
  31.  
  32. DECLARE @sub_code NVARCHAR(30)
  33. DECLARE @sub_barcode NVARCHAR(30)
  34. DECLARE @sub_fullName NVARCHAR(30)
  35.  
  36. DECLARE @Date_start DATETIME
  37. DECLARE @Date_end DATETIME
  38.  
  39. SET @sub_code_base='AutoSubCode_'
  40. SET @sub_barcode_base='AutoBM_'
  41.  
  42. SET @Date_start= '1930-01-01'
  43. SET @Date_end=getdate()
  44.  
  45. SET @sub_fullName_base='AutoFullName_'
  46. SET @sub_recordCreateDate=GETDATE()
  47. SET @sub_recordCreator=22
  48.  
  49. -- 插入Subject_study
  50. DECLARE @study_id INTEGER
  51.  
  52. SET @study_id=10082
  53.  
  54. -- 插入Biomaterial
  55. DECLARE @bio_barcode_base NVARCHAR(30)
  56. DECLARE @bioName_base NVARCHAR(30)
  57. DECLARE @bio_recordCreateDate datetime
  58. DECLARE @bio_recordCreator INTEGER
  59.  
  60. DECLARE @bio_barcode NVARCHAR(30)
  61. DECLARE @bio_bioName NVARCHAR(30)
  62.  
  63. SET @bio_barcode_base='AutoBioBM_'
  64. SET @bioName_base='AutoBioName_'
  65.  
  66. -- 插入biomaterial_study
  67. DECLARE @biomaterial_id INTEGER
  68. SET @biomaterial_id=(select max(id) from biomaterial)+1
  69.  
  70. WHILE @subid_index<@count
  71. BEGIN
  72. -- 生产编号
  73. SET @sub_code=@sub_code_base+CONVERT(NVARCHAR,@subid_index)
  74. SET @sub_barcode=@sub_barcode_base+CONVERT(NVARCHAR,@subid_index)
  75. SET @sub_fullName=@sub_fullName_base+CONVERT(NVARCHAR,@subid_index)
  76.  
  77. -- 随机生成性别 Male/Female/空
  78. SET @sub_sex= CONVERT(NVARCHAR,cast( RAND()*3 as int))
  79. IF @sub_sex=''
  80. SET @sub_sex='Male';
  81. ELSE IF
  82. @sub_sex=''
  83. SET @sub_sex='Female';
  84. ELSE IF @sub_sex=''
  85. SET @sub_sex=NULL;
  86.  
  87. -- 随机生成存活状态 Dead/Alive/空
  88. SET @sub_mortalityStatus = CONVERT(NVARCHAR,cast( RAND()*3 as int))
  89. IF @sub_mortalityStatus=''
  90. SET @sub_mortalityStatus='Dead';
  91. ELSE IF
  92. @sub_mortalityStatus=''
  93. SET @sub_mortalityStatus='Alive';
  94. ELSE IF @sub_mortalityStatus=''
  95. SET @sub_mortalityStatus=NULL;
  96.  
  97. -- 随机生成Reserved状态 Yes/No/空
  98. SET @sub_reserved = CONVERT(NVARCHAR,cast( RAND()*3 as int))
  99. IF @sub_reserved=''
  100. SET @sub_reserved='Yes';
  101. ELSE IF
  102. @sub_reserved=''
  103. SET @sub_reserved='No';
  104. ELSE IF @sub_reserved=''
  105. SET @sub_reserved=NULL;
  106. -- 随机生产日期
  107. select @sub_birthdate=dateadd(minute,abs(checksum(newid()))%(datediff(minute,@Date_start,@Date_end)+1),@Date_start)
  108.  
  109. -- 插入Subject
  110. INSERT INTO subject(subject_code,barcode, birth_date, sex, full_name,mortality_status,reserved, record_create_date,record_creator)
  111. VALUES (@sub_code, @sub_barcode,@sub_birthdate,@sub_sex,@sub_fullName,@sub_mortalityStatus,@sub_reserved,@sub_recordCreateDate,@sub_recordCreator)
  112.  
  113. -- 插入Subject_study
  114. INSERT INTO subject_study(subject_id,study_id)
  115. VALUES (@subid_index,@study_id)
  116.  
  117. -- 插入Biomaterial
  118. -- 生产编号
  119. SET @bio_barcode=@bio_barcode_base+CONVERT(NVARCHAR,@subid_index)
  120. SET @bio_bioName=@bioName_base+CONVERT(NVARCHAR,@subid_index)
  121. INSERT INTO biomaterial(at_facility,bar_code, batch_id, biomaterial_name,carrier,concentration,concentration_unit1,container_type,created_date, current_status, external_id,external_source, mass,mass_units,parent_id, storage_location,subject_id, tracking_number,volume,volume_units,notes,record_create_date, record_creator, concentration_unit2)
  122. VALUES ( 2, @bio_barcode ,'', @bio_bioName, NULL, '', '', 1, NULL, 'In Inventory', '', '', '', '', -1 ,'', @subid_index,'', '', '', '', @bio_recordCreateDate,@bio_recordCreator,'');
  123.  
  124. -- 插入biomaterial_study
  125. INSERT INTO biomaterial_study(study_id,biomaterial_id)
  126. VALUES(@study_id,@biomaterial_id)
  127.  
  128. -- 插入样本和附件的关联
  129. INSERT INTO attachment_associated(type,belong_id,attachment_id) values(2,@biomaterial_id,220)
  130. INSERT INTO attachment_associated(type,belong_id,attachment_id) values(2,@biomaterial_id,221)
  131. INSERT INTO attachment_associated(type,belong_id,attachment_id) values(2,@biomaterial_id,236)
  132. INSERT INTO attachment_associated(type,belong_id,attachment_id) values(2,@biomaterial_id,237)
  133. INSERT INTO attachment_associated(type,belong_id,attachment_id) values(2,@biomaterial_id,251)
  134. INSERT INTO attachment_associated(type,belong_id,attachment_id) values(2,@biomaterial_id,252)
  135. INSERT INTO attachment_associated(type,belong_id,attachment_id) values(2,@biomaterial_id,253)
  136. SET @subid_index=@subid_index+1
  137. END

Sql server 存储过程批量插入若干数据。的更多相关文章

  1. SQL Server TVPs 批量插入数据

    在SQL Server 中插入一条数据使用Insert语句,但是如果想要批量插入一堆数据的话,循环使用Insert不仅效率低,而且会导致SQL一系统性能问题.下面介绍SQL Server支持的两种批量 ...

  2. SQL Server 2008 批量插入数据时报错

    前几天在SQL Server 2008同步产品数据时,总是提示二进制文本被截断的错误,但是经过检查发现数据都符合格式要求. 百思不得其解,单独插入一条条数据则可以插入,但是批量导入则报错. 批量导入代 ...

  3. sql server中批量插入与更新两种解决方案分享(存储过程)

    转自http://www.shangxueba.com/jingyan/1940447.html 1.游标方式 SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONG ...

  4. sql server中批量插入与更新两种解决方案分享

    若只是需要大批量插入数据使用bcp是最好的,若同时需要插入.删除.更新建议使用SqlDataAdapter我测试过有很高的效率,一般情况下这两种就满足需求了 bcp方式 复制代码 代码如下: /// ...

  5. SQL SERVER数据库批量替换某个数据表里的数据update

    批量替换:将A表CMC里面所有包含a替换成b而不影响其他内容UPDATE A SET CMC=REPLACE(CMC,'a','b')

  6. SQL Server ->> 存储过程sp_rename重命名数据对象

    1) 表转移Schema和重命名表 ALTER SCHEMA Stage TRANSFER dbo.Stage_AAA; EXEC sp_rename 'Stage.Stage_AAA', 'AAA' ...

  7. Oracle 存储过程批量插入数据

    oracle 存储过程批量插入大量数据 declare numCount number; userName varchar2(512); email varchar2(512); markCommen ...

  8. 使用XML向SQL Server 2005批量写入数据——一次有关XML时间格式的折腾经历

    原文:使用XML向SQL Server 2005批量写入数据——一次有关XML时间格式的折腾经历 常常遇到需要向SQL Server插入批量数据,然后在存储过程中对这些数据进行进一步处理的情况.存储过 ...

  9. 使用XML向SQL Server 2005批量写入数据——一次有关XML时间格式的折腾经历

    使用XML向SQL Server 2005批量写入数据——一次有关XML时间格式的折腾经历   原文:使用XML向SQL Server 2005批量写入数据——一次有关XML时间格式的折腾经历 常常遇 ...

随机推荐

  1. 在Java程序中读写windows共享文件夹

    摘要 使用Java通过JCIFS框架读写共享文件夹,使用SMB协议,并支持域认证. 项目常常需要有访问共享文件夹的需求,例如读取共享文件夹存储的视频.照片和PPT等文件.那么如何使用Java读写Win ...

  2. ubuntu上make menuconfig出错

    如果使用make menuconfig的方式配置内核,又碰巧系统没有安装ncurses库(ubuntu系统默认就没有安装此库),就会出现错误,错误信息大体上如下: *** Unable to find ...

  3. python小练--使用正则表达式将json解析成dict

    练习python语法,自己实现了一个简单的解析json字符,存为dict字典对象. { "id":12, "name":"jack", &q ...

  4. VS Code 创建代码段 Snippets

    菜单:文件 -> 首选项 -> 用户代码片断 打开User Snippets菜单: 选择C#: 然后把里面注释的文字留下, 复制其中那段代码并修改称自己的代码段: "Create ...

  5. (4.7)mysql备份还原——深入解析二进制日志(3)binlog的三种日志记录模式详解

    关键词:binlog模式,binlog,二进制日志,binlog日志 目录概述 0.binlog概述 查看binlog日志参数设置: show variables like '%log_bin%'; ...

  6. mysql 操作sql语句 目录

    mysql 操作sql语句 操作数据库 mysql 操作sql语句 操作数据表 mysql 操作sql语句 操作数据表中的内容/记录

  7. 20180322 对DataTable里面的数据进行去重

    对DataTable里面的数据进行去重 DataTable dt = new DataTable(); dt.Columns.Add("Id", typeof(int)); dt. ...

  8. MySQL5.7配置基于GTID的复制

    MySQL5.7下配置GTID复制的方法: 修改主库和从库的配置文件,加入下列部分的配置项:主库:[mysqld]log-bin=mysql-binbinlog_format= ROWgtid-mod ...

  9. 006-优化web请求二-应用缓存、异步调用【Future、ListenableFuture、CompletableFuture】、ETag、WebSocket【SockJS、Stomp】

    四.应用缓存 使用spring应用缓存.使用方式:使用@EnableCache注解激活Spring的缓存功能,需要创建一个CacheManager来处理缓存.如使用一个内存缓存示例 package c ...

  10. personalblog

    personalBlog loginRegist页面结构 <div class="navbar-collapse nostyle collapse clearfix"> ...