生成表中的数据的脚本。

脚本|数据

在A服务器中有表 table1 ,想把该表的内容导到 B服务器中,这两个数据库没联网,怎么办?
导成外部文件,再用导入导出。。。。 这太笨了吧,如果对方服务器是INTERNET上的,只能执行服本怎么办,晕死了吧,用这个存储过程来帮你。
ALTER           proc sp_GetTableData
  @objname nvarchar(776)
as
-- set @objname='s_coderule'

/* declare @no varchar(35), @yes varchar(35), @none varchar(35) 
 select @no = name from master.dbo.spt_values where type = 'B' and number = 0 
 select @yes = name from master.dbo.spt_values where type = 'B' and number = 1 
 select @none = name from master.dbo.spt_values where type = 'B' and number = 2 
*/
  declare @numtypes nvarchar(80) 
  select @numtypes = N'tinyint,smallint,decimal,int,real,money,float,numeric,smallmoney,varbinary,bit' 
  declare @chartypes nvarchar(80) 
  select @chartypes = N'char,varchar,text,nchar,ntext,nvarchar' 
  declare @datetypes nvarchar(80) 
  select @datetypes = N'datetimesmalldatetime' 
  declare @Limitlength Int, @Limitlength1 Int
 
 declare @objid bigint 
 --declare @sysobj_type char(2) 
 select @objid = id
--, @sysobj_type = xtype
from sysobjects where id = object_id(@objname) 
 set @Limitlength = 0
 set @limitLength1 = 0
declare @name varchar(30),@type varchar(10),@length int,@FieldSQL varchar(5000),@SQL varchar(8000),@ident smallint
 set @SQL=''
 set @FieldSQL=''

declare cur cursor
for

  select 
   'Column_name'   = name, 
   'Type'     = type_name(xusertype), 
   'Length'    = convert(int, length),
   'Ident'    =colstat
  from syscolumns where id = @objid and number = 0 order by colid 

open Cur
fetch next from cur into @name,@type,@length,@ident
while @@fetch_status=0
begin
  if @Ident=0
begin
  if @Limitlength > 200
  begin
     set @sql = @sql + ','
     set @limitlength = 0
  end

  if @Limitlength1 > 200
  begin
     set @Fieldsql = @Fieldsql + char(39) + ',' + char(39)
     set @limitlength1 = 0
  end
  Set @FieldSQl = @FieldSQL + LTrim(Rtrim(@name)) + ','
  if  charindex(@type, @numtypes) >0--('+convert(char(6),@length)+')
    set @sql=@SQL+'+ Case when '+@name+' is null then ''Null'' else Rtrim(Convert(char,' + @name + ')) end'
  else if charindex(@type, @chartypes) >0
    set @sql=@SQL+'+ Case when '+@name+' is null then ''Null'' else +char(39) + RTrim(' + @name + ')+char(39) end '
  else if charindex(@type, @datetypes) >0
    set @sql=@SQL+'+ Case when '+@name+' is null then ''Null'' else +char(39) + RTrim(convert(char(19),'+@name+',120))+char(39) end'
  set @SQL=@SQL+'+'+char(39)+','+char(39)
  set @Limitlength = @Limitlength + @Length
  set @Limitlength1 = @Limitlength1 + Len(@Name)

end

  fetch next from cur into @name,@type,@length,@ident
end
close cur
deallocate cur

--  print @sql
if right(@FieldSQl, 1) = char(39)
   SET @FieldSQL = Substring(@FieldSQL, 1, len(@FieldSQL)-5)
else
   SET @FieldSQL = Substring(@FieldSQL, 1, len(@FieldSQL)-1)

if right(@SQl, 1) = ','
   SET @SQL = Substring(@SQL, 1, len(@SQL)-5)
else
   SET @SQL=substring(@SQL,1,len(@SQL)-4)

--print(@FieldSQL)

 

set @FieldSQl = 'select '+char(39)+'insert into '+@objname + '(' + @FieldSQL + ')'
--set @FieldSQl = 'select '+char(39)+'insert into '+@objname+'('+ @FieldSQL +')'
print @FieldSQL

set @Sql = ' values('+char(39)+@SQL+'+'+char(39)+')'+char(39)+' from '+@objname

print @SQL

set @sql = @fieldsql + @sql
exec(@sql)

--Exec @FieldSQl + @sql
--select Rtrim(isnull(convert(char(8),Did),'')) from s_send_files

GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO

看看结果吧,有一些BUG,够用就行,懒得改了。

时间: 2024-10-03 11:46:36

生成表中的数据的脚本。的相关文章

反射-java代码实现生成一套表中的数据,包括表的关联关系

问题描述 java代码实现生成一套表中的数据,包括表的关联关系 在a表中生成一套a表中的数据,只是一个字段值不一样而已,并且还要生成表的关系关系 相当于在原来表关系的基础上在生成一套新的数据.

怎么用程序实现在sql Server中按要求选择几个表生成Access数据库,并能把表中的数据也同时生成.

问题描述 怎么用程序实现在sqlServer中按要求选择几个表生成Access数据库,并能把表中的数据也同时生成.

请各位一下.如何将C#中的数据网格表中的数据导到EXCEL表中?

问题描述 请各位一下.如何将C#中的数据网格表中的数据导到EXCEL表中? 解决方案 解决方案二:是GridView导出EXCEL吗?解决方案三:从网上找到的,引用Excel库usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Text;usingSystem.Windows.Forms;usingSystem

关于验证表中有无数据的方法比较

在平时的工作中,有时候需要准备一些脚本,比如能够简单验证一下表是否可访问,或者验证表中有无数据等. 今天在测试环境进行了简单的模拟,发现还是有很大的差别. 简单来说,要实现如上的需求有两种方式,一种是通过count来判断,另外一种是通过rowid来判断. 举个例子. 先来看一个大表,但是某个分区没有数据的情况. select count(1)  from  APP_TMP.INVOICE partition(A8_B8)  where rownum Execution Plan --------

Mysql 导出数据库和指定表中的数据

参考地址:http://jingyan.baidu.com/article/b7001fe14240ab0e7282dde9.html [root@youo zw]# mysqldump -u root -p IpManage_v2 > zw_ipmanagev2.sql; 唉哟,不错哦!   MySQL导出指定表中的数据 要求: 1. 不导出创表的语句,因为表已经建好:默认会导出,先drop table然后create table: 2. 导出的insert语句加上ignore,允许重复执行:

清空所有表中的数据的存储过程

复制代码 代码如下: --******************************************************* --* 清空所有表中的数据 * --* 撒哈拉大森林 * --* 2010-6-28 * --******************************************************* if exists (select * from sysobjects where type='P' and name=N'P_DeleteAllData'

从MySQL数据库表中检索数据

在<用MySQL创建数据库和数据库表>文章中,我们如何创建一个数据库和数据库表,并知道如何向数 据库表中添加记录. 那么我们如何从数据库表中检索数据呢? 1.从数据库表中检索信息 实际上,前面我们已经用到了SELECT语句,它用来从数据库表中检索信息. select语句格式一般为: SELECT 检索关键词 FROM 被检索的表 WHERE 检索条件(可选) 以前所使用的" * "表示选择所有的列.下面继续使用我们在上篇文章中创建的表 mytable. 2.查询所有数据:

Excel表格中汇总多个数据表中的数据的方法

  Excel表格中汇总多个数据表中的数据的方法           1.打开需要处理的工作簿,在这个工作簿中,"11月采购表"和"12月采购表"工作表包含需要合并的数据,如图1所示."合计"工作表用于放置进行合并计算后的数据,其结构如图2所示. 图1 需要合并的两张工作表 图2 "合计"工作表的结构 2.在"合计"工作表中单击选择放置合并计算结果的单元格区域中的第一个单元格,然后在功能区"数据&

从从MySQL数据库表中检索数据

  在<用MySQL创建数据库和数据库表>文章中,我们如何创建一个数据库和数据库表,并知道如何向数 据库表中添加记录. 那么我们如何从数据库表中检索数据呢? 1.从数据库表中检索信息 实际上,前面我们已经用到了SELECT语句,它用来从数据库表中检索信息. select语句格式一般为: SELECT 检索关键词 FROM 被检索的表 WHERE 检索条件(可选) 以前所使用的" * "表示选择所有的列.下面继续使用我们在上篇文章中创建的表 mytable. 2.查询所有数据