今天写程序时不小心删了这段时间做程序很重要的一个表中的一些数据,本来紧张死了(要是找不回来来了,工期又要拖后了),我在网上找了种方法,可以把数据库表中的数据转成sql insert语句的存储过程,特此和大家分享:
create proc proc_insert (@tablename varchar(256))
as
begin
set nocount on
declare @sqlstr varchar(4000)
declare @sqlstr1 varchar(4000)
declare @sqlstr2 varchar(4000)
select 'SET IDENTITY_INSERT '+@tablename +' ON'
select @sqlstr='select ''insert '+@tablename
select @sqlstr1=''
select @sqlstr2=' ('
select @sqlstr1= ' values ( ''+'
select @sqlstr1=@sqlstr1+col+'+'',''+' ,@sqlstr2=@sqlstr2+name +',' from (select case
-- when a.xtype =173 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar('+convert(varchar(4),a.length*2+2)+'),'+a.name +')'+' end'
when a.xtype =104 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar(1),'+a.name +')'+' end'
when a.xtype =175 then 'case when '+a.name+' is null then ''NULL'' else '+'''''''''+'+'replace('+a.name+','''''''','''''''''''')' + '+'''''''''+' end'
when a.xtype =61 then 'case when '+a.name+' is null then ''NULL'' else '+'''''''''+'+'convert(varchar(23),'+a.name +',121)'+ '+'''''''''+' end'
when a.xtype =106 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar('+convert(varchar(4),a.xprec+2)+'),'+a.name +')'+' end'
when a.xtype =62 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar(23),'+a.name +',2)'+' end'
when a.xtype =56 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar(11),'+a.name +')'+' end'
when a.xtype =60 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar(22),'+a.name +')'+' end'
when a.xtype =239 then 'case when '+a.name+' is null then ''NULL'' else '+'''''''''+'+'replace('+a.name+','''''''','''''''''''')' + '+'''''''''+' end'
when a.xtype =108 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar('+convert(varchar(4),a.xprec+2)+'),'+a.name +')'+' end'
when a.xtype =231 then 'case when '+a.name+' is null then ''NULL'' else '+'''''''''+'+'replace('+a.name+','''''''','''''''''''')' + '+'''''''''+' end'
when a.xtype =59 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar(23),'+a.name +',2)'+' end'
when a.xtype =58 then 'case when '+a.name+' is null then ''NULL'' else '+'''''''''+'+'convert(varchar(23),'+a.name +',121)'+ '+'''''''''+' end'
when a.xtype =52 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar(12),'+a.name +')'+' end'
when a.xtype =122 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar(22),'+a.name +')'+' end'
when a.xtype =48 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar(6),'+a.name +')'+' end'
-- when a.xtype =165 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar('+convert(varchar(4),a.length*2+2)+'),'+a.name +')'+' end'
when a.xtype =167 then 'case when '+a.name+' is null then ''NULL'' else '+'''''''''+'+'replace('+a.name+','''''''','''''''''''')' + '+'''''''''+' end'
else '''NULL'''
end as col,a.colid,a.name
from syscolumns a where a.id = object_id(@tablename) and a.xtype <>189 and a.xtype <>34 and a.xtype <>35 and a.xtype <>36
)t order by colid
select @sqlstr=@sqlstr+left(@sqlstr2,len(@sqlstr2)-1)+') '+left(@sqlstr1,len(@sqlstr1)-3)+')'' from '+@tablename
-- print @sqlstr
exec( @sqlstr)
select 'SET IDENTITY_INSERT '+@tablename +' OFF'
set nocount off
end
go
使用如下例:
execute proc_insert ActiveDirectory;
分享到:
相关推荐
在IT行业中,数据库管理和数据迁移是常见的任务,而“导出SQL数据为Insert语句”是一种常用的方法,便于数据备份、迁移或测试环境的搭建。本文将深入探讨这个主题,介绍如何将数据库中的数据转换为Insert语句,并...
1、将数据库中的表记录导出为Insert语句 2、支持选择数据库中的表,并排序生成 3、支持单表的SQL语句,关联表以第一个表为准 4、保存为.txt或.sql文档 5、对上次的操作会进行保存配置 欢迎提供宝贵意见^_^
1、将表、视图及SQL语句查询结果生成Insert语句 2、将选定数据库对象(表、视图、存储过程等)生成Script 3、支持单表的SQL语句,关联表以第一个表为准 4、丰富了生成选项配置 5、树型结构方便查询操作 6、保存连接及...
Data row to insert sql是一个小的工具软件,可以将数据库表中指定数据转换成相应的insert sql语句。目前支持的数据库类型为oracle,db2,ms sql server。 目前还有一些缺陷,还有待完善,具体如下: 1、对ms sql ...
### SQL基础 - MS-SQL Server 基础类知识点总结 #### 1. 为什么学习SQL 自从人类社会诞生以来,信息(包括文献、档案、资料、数据等)的管理和利用就成为社会发展的重要组成部分。随着计算机技术和互联网的发展,...
- **插入(INSERT)**:INSERT语句用于向数据库表中添加新的记录。 - **更新(UPDATE)**:UPDATE用于修改已存在的数据。 - **删除(DELETE)**:DELETE语句用于从表中删除数据。 - **创建(CREATE)**:CREATE...
很好用,MS+SQL表数据导出成Insert语句的工具
SQL存储过程是数据库管理系统中预编译的SQL语句集合,它可以封装复杂的业务逻辑,提高数据处理效率,降低网络通信量,增强系统的安全性。在MS-SQL环境中,存储过程的编写和管理是一项重要的任务。而“MS-SQL标准存储...
6. **数据修改**:INSERT、UPDATE和DELETE语句的使用,包括批量插入、条件更新和删除操作。 7. **游标**:游标的概念和使用,用于逐行处理查询结果,提供更灵活的数据处理方式。 8. **事务处理**:理解事务的ACID...
- **RDBMS**:关系型数据库管理系统,如MS SQL Server、MySQL等,基于SQL标准进行操作,数据以表格形式存储。 - **表结构**:每个表包含多条记录,每条记录由多个字段(列)组成,如示例中的"Persons"表。 4. **...
3. **SQL查询**:编写SELECT、INSERT、UPDATE和DELETE语句,以获取、添加、修改和删除数据库记录。 4. **数据绑定**:通过TDataSource、TDBGrid等组件将数据库表与用户界面控件绑定,实现数据的实时显示和编辑。 5...
### MS SQL 基础语句教程 #### 第一天:SQL简介 - **SQL简史**:SQL(Structured Query Language)是一种用于管理关系型数据库的标准语言。它最初由IBM的三位研究人员于1974年提出,后来经过标准化,成为了一个...
3. **插入、更新与删除**:掌握INSERT、UPDATE和DELETE语句,用于向表中插入新数据、修改现有数据或删除不需要的记录。 4. **DML(数据操纵语言)事务**:理解事务的概念,以及如何使用BEGIN TRANSACTION、COMMIT和...
SQL Server 2000基于SQL标准,支持基本的SQL语法,如SELECT、INSERT、UPDATE和DELETE语句,用于查询、插入、修改和删除数据。学习者应熟悉这些基本操作,并了解如何创建、修改和删除表(CREATE TABLE、ALTER TABLE、...
2. 数据操纵语言(DML):用于检索和修改数据,包括SELECT、INSERT、UPDATE和DELETE等语句。 3. 数据控制语言(DCL):涉及数据库的安全管理,控制用户对数据的访问权限。 4. T-SQL特有的语言元素:如变量、运算符、...
此软件用于把数据库里的数据导出为指定数据库类型的insert语句,用于数据备份或迁移到另一个数据库, 大文本和二进制字段被忽略。 当前支持oracle、sybase、mysql和ms sqlServer数据库。 你可以修改参数文件、增加新...
JetSQL是一款专为MS Jet SQL设计的脚本解释器,它允许用户通过SQL语句来操作和管理基于Microsoft Jet数据库引擎的数据。JetSQL为开发者和数据库管理员提供了方便的工具,可以执行复杂的数据库操作,比如查询、插入、...
将Microsoft SQL Server(简称MS SQL Server)中的数据导出为SQL插入语句是一个常见的数据库管理操作,主要用于数据备份、迁移或脚本化目的。在给定的文件信息中,一个存储过程`dbo.UspOutputData`被设计用于实现这...
学习者需要掌握基本的SQL语句,如SELECT用于查询数据,INSERT用于插入新数据,UPDATE用于更新现有数据,DELETE用于删除数据,以及DDL(Data Definition Language)用于创建和修改表结构。 2. **T-SQL扩展**:T-SQL...
3. **数据插入**:INSERT语句用于向表中插入新记录,如`INSERT INTO 表名 (列1, 列2) VALUES (值1, 值2)`。如果省略列名,将默认插入所有列。 4. **数据删除**:DELETE语句用于删除表中的行,如`DELETE FROM 表名 ...