用Sql生成数据插入Sql脚本

CREATE PROCEDURE dbo.UspOutputData @tablename sysname

AS

declare @column varchar(1000)

declare @columndata varchar(1000)

declare @sql varchar(4000)

declare @xtype tinyint

declare @name sysname

declare @objectId int

declare @objectname sysname

declare @ident int

set nocount on

set @objectId=object_id(@tablename)

if @objectId is null -- 判断对象是否存在

begin

print 'The object not exists'

return

end

set @objectname=rtrim(object_name(@objectId))

if @objectname is null or charindex(@objectname,@tablename)=0 --此判断不严密

begin

print 'object not in current database'

return

end

if OBJECTPROPERTY(@objectId,'IsTable') < > 1 -- 判断对象是否是table

begin

print 'The object is not table'

return

end

select @ident=status&0x80 from syscolumns where id=@objectid and status&0x80=0x80

if @ident is not null

print 'SET IDENTITY_INSERT '+@TableName+' ON'

declare syscolumns_cursor cursor

for select c.name,c.xtype from syscolumns c where c.id=@objectid order by c.colid

open syscolumns_cursor

set @column=''

set @columndata=''

fetch next from syscolumns_cursor into @name,@xtype

while @@fetch_status < >-1

begin

if @@fetch_status < >-2

begin

if @xtype not in(189,34,35,99,98) --timestamp不需处理,image,text,ntext,sql_variant 暂时不处理

begin

set @column=@column+case when len(@column)=0 then'' else ','end+@name

set @columndata=@columndata+case when len(@columndata)=0 then '' else ','','','

end

+case when @xtype in(167,175) then '''''''''+'+@name+'+''''''''' --varchar,char

when @xtype in(231,239) then '''N''''''+'+@name+'+''''''''' --nvarchar,nchar

when @xtype=61 then '''''''''+convert(char(23),'+@name+',121)+''''''''' --datetime

when @xtype=58 then '''''''''+convert(char(16),'+@name+',120)+''''''''' --smalldatetime

when @xtype=36 then '''''''''+convert(char(36),'+@name+')+''''''''' --uniqueidentifier

else @name end

end

end

fetch next from syscolumns_cursor into @name,@xtype

end

close syscolumns_cursor

deallocate syscolumns_cursor

set @sql='set nocount on select ''insert '+@tablename+'('+@column+') values(''as ''--'','+@columndata+','')'' from '+@tablename

print '--'+@sql

exec(@sql)

if @ident is not null

print 'SET IDENTITY_INSERT '+@TableName+' OFF'

GO

exec UspOutputData Brand

时间: 2024-10-29 04:25:17

用Sql生成数据插入Sql脚本的相关文章

sql的数据插入,为什么有语法错误

问题描述 sql的数据插入,为什么有语法错误 插入数据 insert into stu.dbo.s(sno,sname,ssex,sage,sdept) values 其中stu为数据库名,为什么说对象名无效 解决方案 细心检查一下是否存在表s 解决方案二: 44行是什么?看是不是数据格式不对 解决方案三: 应该是你 的数据库没有 更换过来,表不存在,所以就语法错误了 解决方案四: 你的sql应该是对的啊 解决方案五: 应该是你 的数据库没有 更换过来,表不存在,所以就语法错误了 解决方案六:

将DataTable 数据插入 SQL SERVER 数据库

原文:将DataTable 数据插入 SQL SERVER 数据库 以下提供3中方式将DataTable中的数据插入到SQL SERVER 数据库: 一:使用sqlcommand.executenonquery()方法插入 foreach (DataRow datarow in datatable.Rows) { string sql = "INSERT INTO [Table_1] ([CompanyName],[CompanyCode],[Address],[Owner],[Memo])&q

sql生成(插入、修改、删除数据的存储过程)代码的存储过程

GO /****** 对象: StoredProcedure [dbo].[pro_GenerateProSet] 脚本日期: 08/03/2012 11:26:43 ******/ IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[pro_GenerateProSet]') AND type in (N'P', N'PC')) DROP PROCEDURE [dbo].[pro_GenerateP

读取一个txt档,然后将数据插入sql server,执行的时候报内存溢出,有时候提示连接已关闭

问题描述 用的是批插的方式sqlBC.WriteToServer(dt);之前数据量不是太大,三四十万笔,速度还行,三四十秒现在数据量变得很大,txt档150M左右,数据近100W,//事务处理插入数据库中publicvoidExesql(){//调用方法TxtFileToStr()stringstr=TxtFileToStr();string[]sql=str.Split(',');//得到string数组intnum=sql.Length-1;一次事务处理直接内存溢出,请问如何分批处理呢?求

sql排序分页 如果有新数据插入

问题描述 sql排序分页 如果有新数据插入 sql排序分页 如果有新数据插入并且排序在前面,那取第二页的时候就会有重复数据,而且新插入的数据展示不出来了,怎么解决呢? 各位可能没理解我意思: 比如说现在数据库里面几千万数据,还是实时插入的数据,我想排序后分页取,比如说第一次通过代码给数据库传参取第一页,取100条, 1.这个过程数据库是把所有数据几千万条全部load到内存中排序,然后进行分页,然后取出前100条吗? 2.那第二次,还会再load所有数据一次重新排一次序,再取出101-200之间的

使用XL C/C++编译器中提供的数据访问SQL工具

IBM 用于 z/OS 的 XL C++/C++ 编译器支持在 C/C++ 程序中使用嵌入式 SQL 语句.本文假设您使用了 XL C/C++ DB2 协处理器.文中会描述与 z/OS 上的嵌入式 SQL XL C/C++ 程序中的 SQL 数据交互的各种方法. 使用主变量从 SQL 获取数据 从 SQL 表获取数据的最基本方法是使用主变量(host variables).主变量允许 C/C++ 程序与 DB2 进行通信. 示例:主变量 备注:本文中的所有示例都会引用清单 1 中的学生表. 清单

自动生成insert数据的SQL脚本

判断当表存在标识列的时候就要允许将显式值插入表的标识列中,设置: Set Identity_insert TableName Off 判断数据类型: 如,varchar,char,datetime,nvarchar,nchar,uniqueidentifier时候,在insert字段中就要增加双引号,否则就不加. Use TestGoDeclare @Table1 nvarchar(128), @Table2 nvarchar(128), @Sql1 nvarchar(4000), @Sql2

SQL Server 2008支持将数据导出为脚本

以前我们要将一个表中的数据导出为脚本,那么只有在网上找一个导出数据的Script,然后运行就可以导出数据脚本了.现在在SQL Server 2008的Management Studio中增加了一个新特性,除了导出表的定义外,还支持将表中的数据导出为脚本.导出过程是这样的,我简单说明下: (1)在SSMS2008中的对象资源管理器中,右击需要导出数据的数据库,在弹出式菜单中选择"任务"下的"生成脚本"选项. (2)在脚本向导的选择脚本选项中,将"编写数据的脚

SQL Server 开发之 复制表数据的SQL脚本生成器

server|脚本|数据 使用SQL Server 2000自带的"生成SQL脚本"工具,可以生成创建表.视图.存储过程等的SQL脚本.那么,能否将表中的数据也生成为SQL脚本,在查询分析器中执行这些脚本后自动将数据导入到SQL Server中呢?答案是肯定的.下面的存储过程是一位高人写的,这位高人的姓氏已无人知晓,但SQL Server社区中偶尔还可看到此不朽之作.CREATE PROCEDURE  dbo.OutputData       @tablename   sysname