sqlserver复制表

现有数据库a和数据库b,数据库a里有表table1,数据库b里有表table2.

现在要把表table1里的记录复制到table2中,不同情况采用不同方法:

1. table1和table2表结构相同

use b

insert into table2 select * from a.dbo.table1

2. table1和table2表结构不相同

use b

insert into table2(c1,c2) select c1,c2 from a.dbo.table1

coolxiaoyi:c1,c2为需要复制的列。

3. 如果还没有创建表table2,可以直接将table1的表结构和记录都复制到数据库b中

use b

select * into table2 from a.dbo.table1

coolxiaoyi:这样做有一个问题,就是有时主外键关系不能复制过去(不知道什么原因),需要在执行完sql语句后自己再设置一下主外键。

4. 注意table2中是否有自增长字段

如果有自增长字段,使用以上sql语句时会报错:仅当使用了列列表并且 IDENTITY_INSERT 为 ON 时,才能为表‘table2‘中 的标识列指定显式值。

coolxiaoyi:可以先修改table2表,去掉自增长标识,复制完记录后再修改回来。

或者用2.中的sql语句,不复制自增长字段,复制其他字段。

sql server 复制表结构,复制表数据

*同一机器上sqlserver 复制表结构及数据收藏

一简单的复制

复制表1中id,r_p,r_p1,r_p2,r_p3,r_p4到表2的r_id,x_p,x_p1,x_p2,x_p3中,x_id为以固定值(1)。主要是方便从某表初始化某些值

insert into 表2(x_id,r_id,x_p,x_p1,x_p2,x_p3)select 1,id,r_p,r_p1,r_p2,r_p3 from 表1

二所有表数据一起复制(一个数据库中的所有表结构及数据一起复制到一个新的数据库中)

在企业管理器中,

打开数据库,选择右侧的表,右击“表”,选择“导出数据”,选好源数据库和目的数据库后,从源数据库复制表和视图"

二:

sqlserver 复制表结构

在企业管理器中,全选想要复制的表,右击所有任务/生成SQL脚本.保存为一个*.sql文件.

再在查询分析器中打开.在菜单栏下面中间位置,选择一个数据库,然后把刚才保存的sql文件复制进去,点勾,再按F5执行.表结构复制成功.

复制表数据

使用SQL Server 2000自带的“生成SQL脚本”工具,可以生成创建表、视图、存储过程等的SQL脚本。那么,能否将表中的数据也生成为SQL脚本,在查询分析器中执行这些脚本后自动将数据导入到SQL Server中呢?答案是肯定的。

下面的存储过程是一位高人写的,这位高人的姓氏已无人知晓,但SQL Server社区中偶尔还可看到此不朽之作。

CREATE PROCEDURE    dbo.OutputData

@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 @tablename + ‘对象不存在‘

return

end

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

if @objectname is null or charindex(@objectname,@tablename)=0

begin

print @tablename + ‘对象不在当前数据库中‘

return

end

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

begin

print @tablename + ‘对象不是表‘

return

end

select    @ident=status&0x80   from    syscolumns   where    [email protected]   and    status&0x80=0x80

if @ident is   not   null

print    ‘SET   IDENTITY_INSERT   ‘+ @TableName + ‘   ON‘

--定义游标,循环取数据并生成Insert语句

declare syscolumns_cursor cursor for

select    c.name,c.xtype   from    syscolumns   c

where    [email protected]

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    @[email protected] +

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    ‘‘‘‘‘‘‘‘‘+‘[email protected]+‘+‘‘‘‘‘‘‘‘‘                --varchar,char

when    @xtype   in(231,239)   then    ‘‘‘N‘‘‘‘‘‘+‘[email protected]+‘+‘‘‘‘‘‘‘‘‘             --nvarchar,nchar

when    @xtype=61   then    ‘‘‘‘‘‘‘‘‘+convert(char(23),‘[email protected]+‘,121)+‘‘‘‘‘‘‘‘‘   --datetime

when    @xtype=58   then    ‘‘‘‘‘‘‘‘‘+convert(char(16),‘[email protected]+‘,120)+‘‘‘‘‘‘‘‘‘   --smalldatetime

when    @xtype=36   then    ‘‘‘‘‘‘‘‘‘+convert(char(36),‘[email protected]+‘)+‘‘‘‘‘‘‘‘‘       --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   ‘[email protected]+‘(‘[email protected]+‘)   values(‘‘as   ‘‘--‘‘,‘[email protected]+‘,‘‘)‘‘   from   ‘[email protected]

print    ‘--‘[email protected]

exec(@sql)

if    @ident   is   not   null

print ‘SET   IDENTITY_INSERT   ‘[email protected]+‘   OFF‘

调用时 exec   OutputData   ‘myuser‘ 其中myUser中当前数据库中存在的表

复制myUser表

sqlserver复制表,布布扣,bubuko.com

时间: 2024-10-11 13:54:08

sqlserver复制表的相关文章

MySQL 复制表

MySQL 复制表 如果我们需要完全的复制MySQL的数据表,包括表的结构,索引,默认值等. 如果仅仅使用CREATE TABLE ... SELECT 命令,是无法实现的. 本文将为大家介绍如何完整的复制MySQL数据表,步骤如下: 使用 SHOW CREATE TABLE 命令获取创建数据表(CREATE TABLE) 语句,该语句包含了原数据表的结构,索引等. 复制以下命令显示的SQL语句,修改数据表名,并执行SQL语句,通过以上命令 将完全的复制数据表结构. 如果你想复制表的内容,你就可

删除复制表

要移除某个复制表,则执行以下步骤 1)直接源端的进程参数文件中注释掉包含该表的table行 2)目标端同样在rep进程里面注释掉包含该表的map行 3)源端使用info exta,showch查看检查点并验证归档日志是否存在,然后重启ext进程 4)目标端直接重启rep进程

【转】Oracle如何复制表的sql语句

原文链接 http://database.51cto.com/art/201004/192790.htm 以下的文章主要是介绍Oracle复制表的sql语句,其中包括如何复制表结构的sql.以及如何复制相关表的结构又复制表中的数据sql. 如下,表a是数据库中已经存在的表,b是准备根据表a进行复制创建的表: 1.只复制表结构的sql create table b as select * from a where 1<>1 2.即复制表结构又复制表中数据的sql create table b a

数据库操作,复制表

整理自:http://blog.51yip.com/mysql/1311.html 显示创建表的信息: 1 USE world; 2 SHOW CREATE TABLE city; 显示表结构信息: 1 CREATE TABLE `city` ( 2 `ID` int(11) NOT NULL AUTO_INCREMENT, 3 `Name` char(35) NOT NULL DEFAULT '', 4 `CountryCode` char(3) NOT NULL DEFAULT '', 5

sql复制表

sql复制表有几种方式,下面做个总结,方便使用 select * into 目标表名 from 源表名 insert into 目标表名(fld1, fld2) select fld1, 5 from 源表名 第一个 目标表不存在,会创建新表,只是复制数据,但不会复制索引等信息 第二个表 目标表是存在的 可以指定列 从源表复制并可以指定相关列 常用的就这两种用法,下面取自网络 复制表结构和数据SQL语句 1:复制表结构及数据到新表 select * into 目的数据库名.dbo.目的表名 fr

跨数据库复制表

情况: 1.需要从另一台机子上拷贝一张表过来 2.本机未安装SQL,只有VS2013自带简化版的SQL 过程: 1.在项目中创建数据库文件:右键项目----添加----添加新项---基于服务的数据库 2.选择目标表:右键----打开表定义,复制创建表的SQL语句 3.在本机创建的数据库中,运行复制的SQL语句,创建表 4.运行下面语句,进行本机数据库配置 exec sp_configure 'show advanced options',1 reconfigure exec sp_configu

6)-MySQL复制表

具有SELECT子句的MySQL INSERT 在MySQL中,可以使用SELECT语句返回的列和值来填充INSERT语句的值. 此功能非常方便,因为您可以使用INSERT和SELECT子句完全或部分复制表,如下所示: insert into table_1 select c1, c2, from table_2; 假设要将tasks表复制到tasks_bak表. 首先,通过复制tasks表的结构,创建一个名为tasks_bak的新表,如下所示: create table tasks_bak l

MySQL数据库之-foreign key 外键(一对多、多对多、一对一)、修改表、复制表

今日重点:外键 一对多 多对多      一对一 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 一.引言: 我们在同一数据库创建的表时候,很多时候会出现相同数据的冗余问题,也就是说几个id

雷林鹏分享:MySQL 复制表

MySQL 复制表 如果我们需要完全的复制MySQL的数据表,包括表的结构,索引,默认值等. 如果仅仅使用CREATE TABLE ... SELECT 命令,是无法实现的. 本章节将为大家介绍如何完整的复制MySQL数据表,步骤如下: 使用 SHOW CREATE TABLE 命令获取创建数据表(CREATE TABLE) 语句,该语句包含了原数据表的结构,索引等. 复制以下命令显示的SQL语句,修改数据表名,并执行SQL语句,通过以上命令 将完全的复制数据表结构. 如果你想复制表的内容,你就