`
niunan
  • 浏览: 719070 次
  • 性别: Icon_minigender_1
  • 来自: 南宁
社区版块
存档分类
最新评论

生成Insert语句的存储过程

    博客分类:
  • SQL
阅读更多
网上找到的玩意,觉得很有用,呵呵,特此记录!
-- spGenInsertSQL存储过程生成的语句:insert category values(1,'CPU')
-- spGenInsertSQLHan存储过程生成的语句:insert category(id,name) values(1,'CPU')
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[spGenInsertSQL]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[spGenInsertSQL]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

CREATE  proc spGenInsertSQL (@tablename varchar(256))

as

begin

declare @sql varchar(8000)

declare @sqlValues varchar(8000)

set @sql =' ('

set @sqlValues = 'values (''+'

select @sqlValues = @sqlValues + cols + ' + '','' + ' ,@sql = @sql + '[' + name + '],' 

  from 

      (select case 

                when xtype in (48,52,56,59,60,62,104,106,108,122,127)                                

                     then 'case when '+ name +' is null then ''NULL'' else ' + 'cast('+ name + ' as varchar)'+' end'

                when xtype in (58,61)

                     then 'case when '+ name +' is null then ''NULL'' else '+''''''''' + ' + 'cast('+ name +' as varchar)'+ '+'''''''''+' end'

               when xtype in (167)

                     then 'case when '+ name +' is null then ''NULL'' else '+''''''''' + ' + 'replace('+ name+','''''''','''''''''''')' + '+'''''''''+' end'

                when xtype in (231)

                     then 'case when '+ name +' is null then ''NULL'' else '+'''N'''''' + ' + 'replace('+ name+','''''''','''''''''''')' + '+'''''''''+' end'

                when xtype in (175)

                     then 'case when '+ name +' is null then ''NULL'' else '+''''''''' + ' + 'cast(replace('+ name+','''''''','''''''''''') as Char(' + cast(length as varchar)  + '))+'''''''''+' end'

                when xtype in (239)

                     then 'case when '+ name +' is null then ''NULL'' else '+'''N'''''' + ' + 'cast(replace('+ name+','''''''','''''''''''') as Char(' + cast(length as varchar)  + '))+'''''''''+' end'

                else '''NULL'''

              end as Cols,name

         from syscolumns  

        where id = object_id(@tablename) 

      ) T 

set @sql ='select ''INSERT INTO '+ @tablename + '  '+ left(@sqlValues,len(@sqlValues)-4) + ')'' from '+@tablename

--print @sql

exec (@sql)

end


GO
SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

--==============================第二个存储过程
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[spGenInsertSQLHan]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[spGenInsertSQLHan]
GO

SET QUOTED_IDENTIFIER ON 
GO
SET ANSI_NULLS ON 
GO

CREATE   proc spGenInsertSQLHan (@tablename varchar(256))

as

begin

declare @sql varchar(8000)

declare @sqlValues varchar(8000)

set @sql =' ('

set @sqlValues = 'values (''+'

select @sqlValues = @sqlValues + cols + ' + '','' + ' ,@sql = @sql + '[' + name + '],' 

  from 

      (select case 

                when xtype in (48,52,56,59,60,62,104,106,108,122,127)                                

                     then 'case when '+ name +' is null then ''NULL'' else ' + 'cast('+ name + ' as varchar)'+' end'

                when xtype in (58,61)

                     then 'case when '+ name +' is null then ''NULL'' else '+''''''''' + ' + 'cast('+ name +' as varchar)'+ '+'''''''''+' end'

               when xtype in (167)

                     then 'case when '+ name +' is null then ''NULL'' else '+''''''''' + ' + 'replace('+ name+','''''''','''''''''''')' + '+'''''''''+' end'

                when xtype in (231)

                     then 'case when '+ name +' is null then ''NULL'' else '+'''N'''''' + ' + 'replace('+ name+','''''''','''''''''''')' + '+'''''''''+' end'

                when xtype in (175)

                     then 'case when '+ name +' is null then ''NULL'' else '+''''''''' + ' + 'cast(replace('+ name+','''''''','''''''''''') as Char(' + cast(length as varchar)  + '))+'''''''''+' end'

                when xtype in (239)

                     then 'case when '+ name +' is null then ''NULL'' else '+'''N'''''' + ' + 'cast(replace('+ name+','''''''','''''''''''') as Char(' + cast(length as varchar)  + '))+'''''''''+' end'

                else '''NULL'''

              end as Cols,name

         from syscolumns  

        where id = object_id(@tablename) 

      ) T 

set @sql ='select ''INSERT INTO ['+ @tablename + ']' + left(@sql,len(@sql)-1)+') ' + left(@sqlValues,len(@sqlValues)-4) + ')'' from '+@tablename

--print @sql

exec (@sql)

end
GO
SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO
分享到:
评论

相关推荐

    SQL数据表批量生成Insert语句存储过程

    SQL数据表批量生成Insert语句存储过程,使用方法是 先下载资源后解压缩后,在数据库里执行创建存储过程, 然后执行 存储'表名' 看看查询结果会让你欣喜吧,全都是批量的insert语句了..呵呵.

    表数据生成insert语句的存储过程

    表数据生成insert语句的存储过程;表数据生成insert语句的存储过程;

    生成insert语句的存储过程

    sqlserver的存储过程批量生成insert插入语句 在需要批量导入数据或者保留数据的情况下使用

    excel文件中批量生成insert语句

    本文将详细讲解如何在Excel文件中批量生成INSERT语句,以便快速地将数据导入到数据库中。 首先,我们需要了解INSERT语句的基本结构。INSERT语句用于向数据库表中插入新的记录,其基本语法如下: ```sql INSERT ...

    生成数据库表insert语句脚本

    - **使用数据库工具**:大多数数据库管理工具(如MySQL Workbench, SQL Server Management Studio等)都提供了生成INSERT语句的功能。 - **编程方式**:通过编程语言(如Python, Java)连接数据库,遍历表中所有行...

    导出insert语句的存储过程sql脚本

    生成INSERT语句 最后,根据之前构建的列名和列数据字符串,生成完整的INSERT语句,并执行这个动态生成的SQL脚本。 ```sql set @sql = 'set nocount on; select ''insert into ' + @tablename + '(' + @column + '...

    oracle根据表数据生成insert语句

    某些原因,删了一些自己用的函数,此包是我每次导数据老是用工具,如果要导特定几张表的话,如果用工具导入每次都找的够呛,所以花了一点时间写了此过程,如果发现问题或好的建议可以给我留言或者邮箱myrocket_2003@...

    根据表名自动生成数据的INSERT语句的存储过程.sql

    根据表名自动生成数据的INSERT语句的存储过程.sql

    delphi生成insert 语句

    本话题聚焦于如何利用Delphi生成INSERT语句,这对于数据迁移或者备份恢复等场景非常实用。以下是关于这个主题的详细解释: 1. **Delphi简介**:Delphi是一款基于Object Pascal编程语言的集成开发环境(IDE),由...

    SQL Server存储过程生成insert语句实例

    首先,存储过程`spGenInsertSQL`接受一个参数`@tablename`,该参数是你要生成INSERT语句的表名。通过调用这个存储过程并传递表名,你可以自动生成插入语句,而无需手动编写。 在存储过程中,声明了两个变量`@sql`和...

    sqlserver导出insert语句的存储过程

    ### SQL Server 存储过程实现表数据导出为 INSERT 语句 在 SQL Server 数据库管理系统中,有时候我们需要将表中的数据导出成一系列的 INSERT 语句,这对于备份、恢复或者迁移数据非常有用。本篇文章详细介绍了一个...

    将结果集转换为INSERT的存储过程

    - **数据库迁移**:当需要将某个数据库的数据迁移到另一个数据库时,可以通过此存储过程快速生成INSERT语句,进而简化迁移过程。 - **数据备份与恢复**:通过生成INSERT语句的方式,可以轻松地备份数据并恢复到新的...

    一个存储过程- INSERT_语句生成器.sql

    INSERT_语句生成器.sql 一个存储过程- INSERT_语句生成器.sql 生成表INSERT插入语句SQL,INSERT_语句生成器.sql

    SQL 导出数据 insert 语句

    但是,当数据量较小或者特定需求时,生成INSERT语句就显得很有价值。 INSERT语句是SQL语言中用于向表中插入新记录的基本命令。其基本语法如下: ```sql INSERT INTO 表名 (列1, 列2, ...) VALUES (值1, 值2, ...);...

    将表里的数据批量生成INSERT语句的存储过程 增强版

    在数据库管理中,有时需要将一个表中的数据迁移或备份到另一个数据库,这时批量生成INSERT语句就显得非常有用。SQL Server虽然没有内置功能直接根据查询条件生成这些语句,但可以通过编写存储过程来实现。本文介绍的...

    将数据库中的初始化数据转换成INSERT语句的存储过程

    此外,还可以考虑处理NULL值,因为在生成INSERT语句时,NULL值需要特别处理,如`NULL`关键字不能用引号包围。 标签“源码”和“工具”表明这个存储过程可以作为一个实用的工具,对于开发人员和数据库管理员来说非常...

    Oracle导出INSERT语句V1.1

    在日常数据库管理和开发过程中,有时我们需要将Oracle数据库中的数据导出为INSERT语句,以便在其他环境或者备份恢复时使用。"Oracle导出INSERT语句V1.1"是一个专门为此目的设计的实用工具。 这个工具的主要功能是...

    SQLServer导出为Insert语句

    5. **自动生成Insert语句**:为了批量生成Insert语句,我们需要遍历用户表中的所有记录,并为每一行生成对应的Insert语句。这可以通过编写SQL查询,或者使用编程语言(如C++结合MFC)实现。程序可能首先获取表结构,...

    OutPutData.sql

    SqlServer 数据库 生成Insert语句 存储过程

    delphi 版本,生成数据库insert语句源码

    开发者可能通过输入特定的数据或从现有数据库表中选择数据,来生成相应的INSERT语句,这在数据迁移、备份或者调试过程中非常有用。 在处理数据库时,Delphi通常会使用ADO (ActiveX Data Objects) 或 BDE (Borland ...

Global site tag (gtag.js) - Google Analytics