判断当表存在标识列的时候就要允许将显式值插入表的标识列中,设置:Set Identity_Insert TableName Off
判断数据类型如,varchar,char,datetime,nvarchar,nchar,uniqueidentifier时候,在Insert字段中就要增加双引号,否则就不加;

Use Test
Go
Declare
        @Table1 nvarchar(128),
        @Table2 nvarchar(128),
        @Sql1 nvarchar(4000),
        @Sql2 nvarchar(4000),
        @SqlIdentityInsert nvarchar(512)

Set @Table1='DutyHistory'    --源表
Set @Table2='Duty'            --目标表

IF Object_id(@Table1,'U') Is Null
    Return
If Isnull(@Table2,'')=''
    Set @Table2=@Table1

Set @SqlIdentityInsert=''
If Exists(Select 1 From sys.columns Where Object_id=Object_id(@Table1,'U'))
    Set @SqlIdentityInsert='Select ''Set Identity_Insert '+@Table2+' On '''

Select
    @Sql1=Isnull(@Sql1+',',' Insert Into '+@Table2+' (')+Quotename(name),
    @Sql2=Isnull(@Sql2+'+'',''+','Select @Sql1+'' Select ''')+'+Case When '+Quotename(name)+' Is null Then ''null'' Else '+
            Case When user_type_id In(175,61,239,231,58,98,36,167,241) Then '''''''''+Rtrim('+Quotename(name)+')+''''''''' Else 'Rtrim('+Quotename(name)+')' End +' End'
From sys.columns
Where Object_id=Object_id(@Table1,'U')

Set @Sql1=@Sql1+')'
Set @Sql2=    'Select Convert(nvarchar(max),''If Object_id('''''+@Table2+''''',''''U'''') Is Null Return;'') As SqlInsert  Union All '+
            @SqlIdentityInsert+' Union All '+
            @Sql2+' From '+Quotename(@Table1)+Case @SqlIdentityInsert When '' Then '' Else ' Union All ' End+
            Replace(@SqlIdentityInsert,' On ',' Off')

Exec sp_executesql @Sql2,N'@Sql1 nvarchar(4000)',@Sql1

Result:

SqlInsert
---------------------------------------------------------
If Object_id('Duty','U') Is Null Return;
Set Identity_Insert Duty On
 Insert Into Duty ([id],[Name],[WorkDate],[WorkHours]) Select 1,'Robert','01  1 2008 12:00AM',3.4
 Insert Into Duty ([id],[Name],[WorkDate],[WorkHours]) Select 2,'Robert','01  2 2008 12:00AM',3.4
 Insert Into Duty ([id],[Name],[WorkDate],[WorkHours]) Select 3,'Robert','01  3 2008 12:00AM',3.4
... ...
 Insert Into Duty ([id],[Name],[WorkDate],[WorkHours]) Select 58,'Robert','02 27 2008 12:00AM',4.5
 Insert Into Duty ([id],[Name],[WorkDate],[WorkHours]) Select 59,'Robert','02 28 2008 12:00AM',4.5
 Insert Into Duty ([id],[Name],[WorkDate],[WorkHours]) Select 60,'Robert','02 29 2008 12:00AM',4.5
Set Identity_Insert Duty Off

转载于:https://www.cnblogs.com/wei9931/archive/2008/07/10/1240093.html

自动生成Insert数据的SQL脚本相关推荐

  1. PowerDesigner生成数据库建表sql脚本

    PowerDesigner生成数据库建表sql脚本 一.生成sql server 2000或oracle建表sql脚本 1.新建一个物理模型,通过database菜单下的change current ...

  2. excel怎样修改表格时间和计算机一制,Excel表格中如何自动生成记录数据的日期和时间...

    前几天有人问我:Excel表格在录入信息时如何在日期单元格自动生成日期时间? 在录入表格的时候,我们经常需要录入时间,比要填写出入库时间,为了减少录入的工作量,可以把日期设置为自动生成. 例如我们在B ...

  3. 电脑表格日期怎么修改原有日期_如何在Excel表中自动生成记录数据的日期和时间...

    几天前有人问我: 在Excel表格中输入信息时,如何在日期单元格中自动生成日期和时间? 输入表格时,我们经常需要输入时间,而不是填写存储时间,为了减少输入工作量,您可以将日期设置为自动生成. 例如,当 ...

  4. 画【Python折线图】的一百个学习报告(三、自动生成单一数据折线图)

    画[Python折线图]的一百个学习报告(三.自动生成单一数据折线图) 目录 画[Python折线图]的一百个学习报告(三.自动生成单一数据折线图) 前言 学习环境 探究目标 分析过程 实践过程 成果 ...

  5. swagger mock文档服务器,通过 Swagger 定义自动生成 Mock 数据

    我最近的在做的项目是一个前后端分离的项目,前后端由不同的团队分别开发,并且前端的进度经常领先后端.这就意味着,当前端在开发一个新功能时,API 可能还没有准备好.不过,我们会先和后端先商议好 API ...

  6. SQL Server将数据导出SQL脚本的方法 转

    SQL Server里面的生成SQL脚本,只会包含数据库及表的字段结构,而不会包含表的数据,也就是SQL脚本里面只有Create database,Create table 这样的语句,没有inser ...

  7. datagrip 导出 Oracle 数据库结构和数据到sql脚本中

    文章目录 1. 问题描述 2. 数据库右键 -- 仅对 MySQL 和 PostgreSQL 有效 1. MySQL 备份 -- mysqldump 2. PostgreSQL 备份 -- pgdum ...

  8. MySQL数据库自动生成大批量数据

    在mysql学习和练习中,特别是学习索引及性能调优时,需要生成一张或几张大表来进行测试,能给初学者更直观的学习和更深刻的印象 一.生成脚本 以下使用存储过程批量生成包含用户名,手机号,出生日期等字段大 ...

  9. 自动生成小工具(二):根据建表sql自动生成增删改查sql语句文件

    Mybatis自动生成插件虽然功能强大,但是也略显笨重.我自己开发了一个自动生成的小工具,更加简单,更加轻量级. 一共只有几百行代码,想改的话,直接修改即可.根据自己的实际情况,可以进行灵活的二次开发 ...

最新文章

  1. iOS架构篇-4 架构模式MVVM
  2. mysql的远程链接工具_Navicat远程链接mysql-8数据库具体操作
  3. AngularJS 表单数据验证及错误信息提示
  4. SAP CRM One Order CLOSING date change debug
  5. 文件夹查找文件(一个文件夹文件查找函数 Delphi)
  6. 高数学习笔记:计算方向导数
  7. [paper reading] YOLO v1
  8. PHP面向对象知识点
  9. 《数字图像处理与机器视觉——Visual C++与Matlab实现》——0.2 数字图像处理与识别...
  10. SpringMVC学习(三)RestFul风格
  11. IaaS基础架构云 —— 云网络
  12. Simulink嵌入式自动代码DSP F28335(4)——SVPWM
  13. PC版微信/QQ防撤回工具(支持最新版)
  14. 天翼云搭建socks5和搭建http
  15. 分享好用的日常记账软件
  16. ‘git clone‘ failed with status 128
  17. linux 内核启动Initramfs与initrd 及其挂载
  18. 用PS制作简单婚纱海报
  19. HTAP 能够取代 OLAP 吗?
  20. 《半小时漫画经济学》读书摘记

热门文章

  1. myeclipse10.7激活
  2. 深度学习笔记三:Softmax Regression
  3. HTML标签meta在seo中的作用
  4. (转载)安全漏洞概念及分类
  5. Leetcode 682. 棒球比赛 解题思路及C++实现
  6. 数据结构源码笔记(C语言):Josephus问题之顺序表
  7. tensorflow sobel算子实现
  8. Jsoup介绍||​​​​​​​jsoup解析url || Jsoup解析字符串||​​​​​​​Jsoup解析文件
  9. 帆软finereport实现动态切换分组和列表模式
  10. c# 学习笔记 (1) 类型转换