输入表名,生成插入语句
if exists (select * from sysobjects where type='p' and name='UspOutputData')
drop proc UspOutputData
GO
CREATE PROCEDURE dbo.UspOutputData
@tablename sysname
AS
declare @column varchar(2000)
declare @columndata varchar(2000)
declare @sql varchar(8000)
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
-- 判斷對象是否是table
if OBJECTPROPERTY(@objectId,'IsTable') < > 1
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 INTO '+@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 t_xt_position_level
选择【执行模式】为“以文本显示结果”,然后将运行后的结果存成.sql,加上用SQL Server生成的数据库脚本就可以了。
另外可以利用第三方工具,导出饮食备注型字段的数据数据可以用powerbuilder。在database painter里面,用SQL选出,或者直接打开表,点击生成的list datawindow,然后在菜单file->save rows as->选择SQL,那么生成的SQL语句就包括建表和insert数据的SQL了。
还有最完善的方式就是自己编程实现导入导出,这样可以应对所有情况的数据转换。
if exists (select * from sysobjects where type='p' and name='UspOutputData')
drop proc UspOutputData
GO
CREATE PROCEDURE dbo.UspOutputData
@tablename sysname
AS
declare @column varchar(2000)
declare @columndata varchar(2000)
declare @sql varchar(8000)
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
-- 判斷對象是否是table
if OBJECTPROPERTY(@objectId,'IsTable') < > 1
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 INTO '+@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 t_xt_position_level
选择【执行模式】为“以文本显示结果”,然后将运行后的结果存成.sql,加上用SQL Server生成的数据库脚本就可以了。
另外可以利用第三方工具,导出饮食备注型字段的数据数据可以用powerbuilder。在database painter里面,用SQL选出,或者直接打开表,点击生成的list datawindow,然后在菜单file->save rows as->选择SQL,那么生成的SQL语句就包括建表和insert数据的SQL了。
还有最完善的方式就是自己编程实现导入导出,这样可以应对所有情况的数据转换。
发表评论
-
oracle去除重复数据常用的方法
2023-12-07 11:11 89SELECT * from ecm_query t whe ... -
mysql得到表名和字段
2018-05-03 10:21 0引用 SELECT table_name FROM INFOR ... -
mysql级联查询
2017-11-30 16:48 1103实现效果 例如: 中国 下的 省 市 县 乡 输入 省的 ... -
oracle恢复删除的数据
2017-09-07 11:16 405分为两种方法:scn和时间戳两种方法恢复。 一、通过scn恢复 ... -
oracle 简单存储 一个表的数据转入另外的表
2017-06-06 19:58 467线损统计导入 select * from xs_gz ... -
Oracle 关联两表写update语句
2017-05-25 09:28 918两种方法: -- 方法1. UPDATE 表2 SE ... -
oracle 触发器实例
2017-03-29 17:09 504//新增字段更改值 create or replace tri ... -
使用oracle 的 PL/Sql 定时执行一个存储过程
2015-03-17 11:19 1339/* 使用oracle 的 PL/Sql 定时执行一个存储过程 ... -
删除oracle末用户的表数据
2015-03-10 16:01 563begin for cr in (select o.obje ... -
一个字符串是否包含另一个字符串(两个字符串内部已逗号隔开)
2014-08-07 11:39 862CREATE FUNCTION [dbo].[getStrCo ... -
Sql Server判断是否含有汉字、数字、字母
2014-06-26 09:45 2280/*含有字母或数字*/ select * from Ta ... -
sql 获取字符串长度SQL字符串操作汇总
2014-05-06 21:24 1126将字符串中从某个字符开始截取一段字符,然后将另外一个字符串插入 ... -
sqlserver锁表
2014-03-31 10:58 703select request_session_id s ... -
sql实现15位身份证转化为18位身份证
2014-02-19 14:22 1414create function f_CID15to18 ... -
如何利用SQL查询语句从SQLSERVER数据库中导入导出EXCEL表格
2013-10-21 16:26 2113如何利用SQL查询语句从SQLSERVER数据库中导入导出E ... -
使用sql语句将一个表中的数据拷贝到另一个表中
2013-08-12 13:59 945声名:a,b ,都是表 --b表存在(两表结构一样)inser ... -
SQLSERVER游标的使用
2013-02-19 15:41 993declare @user_name varchar( ... -
Tomcat 内存分配
2011-03-25 17:25 741023233232 -
oracle数据备份和还原
2011-01-21 11:19 800imp jwag/jwag@ORA10 file=d:jw ... -
Oracle存储过程
2011-01-14 13:39 650declare cursor c1 is select * ...
相关推荐
从SQLSERVER数据库中导出记录生成insert into 语句
可以将数据库中的数据导出insert into脚本, sql server2008以上版本已经自带导出数据库数据成insert脚本功能,该工具针对2005以下版本.使用时先选择数据库服务器地址,在右侧选择Sql Server login,输入数据库账号...
SQL SERVER:把表里的数据导出成为INSERT INTO脚本的存储过程
可将sql server 数据表生成sql语句 语句中包括建表部分和数据部分 常用作sql server 数据导入 例如:--表 buyi_product_comment 的结构 CREATE TABLE buyi_product_comment(proId varchar(50) not null,companyid ...
由于sql server2005里没有像oracle那样将数据导出成sql语句(insert into)的功能。所以,写的一个存储过程,该存储过程将提成的表的数据全部生成insert into.....这样的插入语句。以便数据的复制。
把msSqlServer 中的数据导出成 insert into语句
根据表中的记录生成insert语句的脚本
怎样将表中数据导出,形成insert into 表名 values(...)这样的语句?独此一家 , 别无分号 支持sqlserver access oracle mysql 就用这个软件好了~!
Office数据库升迁 Access 导入 SQL Server,相信大家都知道 SQL-Server 数据库导入导出功能吧,但当你装了精简版的SQL-Server这个功能就会没有了,也就是无法实现数据库导入导出,那么怎么办 写SQL语句? Insert ...
[SQL]将Excel表数据导入SQL Server2005的几种方法归纳 数据库 2010-07-27 11:14:26 阅读201 评论0 字号:大中小 订阅 近日在巨轮着手车间负荷数据处理,反馈回来的数据是保存在Excel文件中的,我必须将其导入SQL ...
代码如下: DECLARE @tbImportTables table(tablename varchar(128), deleted tinyint) — append tables which you want to import Insert Into @tbImportTables(tablename, deleted) values(‘tentitytype’, 1) ...
为了处理SQL语句,Oracle将在内存中分配一个区域,这就是上下文区。这个区包含了已经处理完的行数、指向被分析语句的指针,整个区是查询语句返回的数据行集。游标就是指向上下文区句柄或指针。 1 显示游标 显示...
快速加大表中数据 insert into student(SNo,Name,Sex,Birthday,Salary) select * from student; www.2cto.com 改 update student set Name='陈慧琳',Sex='女' where SNo=1002; 删 savepoint a; delete ...
已针对数百种复杂,真实SQL语句进行了测试待办事项/计划中添加对CREATE,ALTER,DELETE,SELECT INTO语句的支持检测并引用保留的关键字名称根据SQL方言添加格式选项(例如,逗号开头/结尾,贪婪空格,上/下/驼峰式...
4-3 使用向导创建索引 158 6-4-4 利用“管理索引”窗口管理表索引 161 6-5 创建关联 162 6-6 数据输入 165 6-6-1 在表窗口中输入数据 165 6-6-2 导入数据 166 6-6-3 使用INSERT INTO语句 171...
6-6-3 使用INSERT INTO语句 171 第7章 数据库的备份与管理……………….173 7-1 生成数据库的SQL脚本 174 7-1-1 生成SQL脚本窗口 174 7-1-2 执行生成SQL脚本 179 7-1-3 执行SQL脚本文件 181 7-2 收缩...
实例071 在TListView控件中对数据排序或统计 84 实例072 在TListView组件中绘制底纹 86 实例073 在列表视图中拖动视图项 87 2.6 TTreeView控件应用典型实例 88 实例074 将数据库数据显示到树视图中 88 ...
为了处理SQL语句,Oracle将在内存中分配一个区域,这就是上下文区。这个区包含了已经处理完的行数、指向被分析语句的指针,整个区是查询语句返回的数据行集。游标就是指向上下文区句柄或指针。 显示游标 显示游标...