利用sql 存储过程把表中内容自动生成insert语句

选中所在数据库

执行创建存储过程的sql

CREATE proc [dbo].[spGenInsertSQL] (@tablename nvarchar(256),@sqlwhere varchar(4000))
as
begin
declare @sql varchar(max)
declare @sqlValues varchar(max)
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  ‘coalesce(cast(‘+ name + ‘ as varchar),‘‘null‘‘)‘

                when xtype in (58,61)

                     then ‘‘‘‘‘‘‘‘‘+coalesce(convert(varchar,‘+ name +‘,121),‘‘null‘‘)+‘‘‘‘‘‘‘‘‘

               when xtype in (167)
                     then ‘‘‘‘‘‘‘‘‘+coalesce(‘+name+‘,‘‘null‘‘)+‘‘‘‘‘‘‘‘‘
                    -- then ‘case when ‘+ name +‘ is null then ‘‘NULL‘‘ else ‘+‘‘‘‘‘‘‘‘‘ + ‘ + ‘replace(‘+ name+‘,‘‘‘‘‘‘‘‘,‘‘‘‘‘‘‘‘‘‘‘‘)‘ + ‘+‘‘‘‘‘‘‘‘‘+‘ end‘

                when xtype in (231,239,175)
                    then ‘‘‘‘‘‘‘‘‘+coalesce(‘+name+‘,‘‘null‘‘)+‘‘‘‘‘‘‘‘‘
                    --- then ‘case when ‘+ name +‘ is null then ‘‘NULL‘‘ else ‘+‘‘‘‘‘‘‘‘‘ + ‘ + ‘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 ‘+‘‘‘‘‘‘‘‘‘ + ‘ + ‘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 replace(‘‘INSERT INTO ‘+ @tablename + ‘‘ + left(@sql,len(@sql)-1)+‘) ‘ + left(@sqlValues,len(@sqlValues)-4) + ‘);‘‘,‘‘‘‘‘‘null‘‘‘‘‘‘,‘‘null‘‘) from ‘[email protected][email protected]
print @sql
PRINT len(@SQL)
exec (@sql)
end

GO

  执行存储过程

exec [spGenInsertSQL] @tablename=‘RoomConfig‘,@sqlwhere=‘‘

  上面RoomConfig是我库中一个表,在我使用的sql 2008中上面语句会报错找不到存储过程,可以不用管他

时间: 2024-08-02 11:04:49

利用sql 存储过程把表中内容自动生成insert语句的相关文章

SQL Server根据表或视图批量生成插入语句并BCP导出成文本

--声明变量 DECLARE @TableName VARCHAR(100),@RunStr VARCHAR(MAX),@RunRC VARCHAR(MAX),@FinalRun VARCHAR(MAX) --在master库创建数据载体,也可以建立在其他数据库,但一定要是实体表,因为BCP导出不支持临时表 IF OBJECT_ID('master.dbo.tempinsertstr') IS NOT NULL DROP TABLE master.dbo.tempinsertstr CREATE

MS SQLServer表数据生成Insert语句

关键词:SQLServer.表数据.生成Insert语句 反馈意见请联系:[email protected] 简介 数据库数据生成insert(MSSQL版),可将表中的数据生成insert或者update的sql脚本.比如您维护两个数据库,其中一个数据库中增加的数据也希望能够在另外一个数据中进行执行. 下载地址 下载地址:http://www.vidarsoft.cn/download/SQLInsert.zip Csdn下载地址:http://download.csdn.net/detail

将txt文件内容导入sql server 数据库表中

将类似这样的txt文件,如何导入到sql server 数据库表中呢? 第一步,在开始菜单中 找到 sql server 的导入和导出数据 然后,在数据源 的下拉框中 选择 平面文件源 基本都是点击 下一步 选择好要导入数据的数据库 与表: 编辑映射 : 点击下一步 执行 然后 完成 查看数据库 表 数据已经导入 成功

向SQL Server 现有表中添加新列并添加描述.

注: sql server 2005 及以上支持. 版本估计是不支持(工作环境2005,2008). 工作需要, 需要向SQL Server 现有表中添加新列并添加描述. 从而有个如下存储过程. (先附上存储过程然后解释) 代码 /********调用方法********** 作用: 添加列并添加列描述信息 调用: exec [SetColumnInfo] '表名', '列名', N'列说明,描述','列类型{默认:NVARCHAR(50)}','列默认值{默认:NULL}' *********

SQL Server 判断表中是否存在某字段

原文:SQL Server 判断表中是否存在某字段 功能:判断表中是否存在某字段,若不存在,则新增该字段 语句: IF NOT EXIST (SELECT 1 FROM [DATABASE].SYS.SYSCOLUMNS WHERE ID=OBJECT_ID([DATABASE].[SCHEMA].[TABLENAME]) AND NAME='COLUMN_NAME') ALTER TABLE [TABLENAME] ADD [COLUMN_NAME] [COLUMN_TYPE] p.s. 之前

[SQL]存储过程建表

create PROC [dbo].CreateUserTable ( @name NVARCHAR(60) ) AS DECLARE @a NVARCHAR(max) SET @a='create table '[email protected] +' ([id] [int] IDENTITY(1,1) NOT NULL' EXEC (@a) exec CreateUserTable 'zhou' [SQL]存储过程建表

创建存储过程向表中循环添加数据

CREATE PROCEDURE dowhile() BEGIN DECLARE n int; set n=1; WHILE n<=1000 do INSERT into hasindex(num) VALUES (n); set n=n+1; END WHILE; END; CALL dowhile();创建存储过程向表中循环添加数据

SQL去除数据库表中tab、空格、回车符等特殊字符的解决方法

原文:SQL去除数据库表中tab.空格.回车符等特殊字符的解决方法 按照ASCII码, SELECT char(64) 例如64 对应 @,则 SELECT REPLACE('[email protected]', CHAR(64), 'kk'); 则结果为 abckkqq.com 依此类推, 去掉其他特殊符号,参考ASCII码对照表, 去掉tab符号为 select REPLACE('要替换的字符或列名',char(9),'替换的目标字符') 去掉空格符号为 select REPLACE('要

在Word中如何自动生成参考文献引用

来自:在Word中如何自动生成参考文献引用 在写毕业论文时,参考文献动辄就有四五十篇,在文中对照参考文献逐一引用是一件十分痛苦的事情,而且一旦参考文献的顺序发生变化,文中的引用也要逐个修改,那么,我们如何自动生成参考文献引用呢? 方法/步骤 打开需要排版的论文: 我们使用一篇参考文献尚未编号的论文为例,从头讲解引用的自动生成过程. 我们首先对参考文献进行编号,编号的详细过程如图中所示: 然后,我们将光标放到需要插入参考文献引用的位置,在Word的“插入”模块中选择“交叉引用”: 在弹出的对话框中