sql如何将一 个数据库里的某一个表导入另一个数据库同名的表里
发布网友
发布时间:2022-04-29 08:37
我来回答
共6个回答
懂视网
时间:2022-05-01 17:11
因为工作中经常需要将数据从一个数据库导入到另一个数据库中,所以将这个功能写成一个存储过程,以方便调用。现在粘贴出来供大家参考:
注意:
1,以下示例中用到了syscolumns,sysobjects等系统视图,在sql2005及以后的版本中,大家也可以使用sys.columns与sys.objects来代替,只要修改对应的字段即可。
2,以下示例还用到了set identity_insert设置,有对该设置不太清楚的朋友可以点击链接查看其用法。
3,结合sys.tables表与游标,大家可以循环调用以下存储过程以实现将一个数据库中所有的表的数据导入到另一个数据库中。
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
create PROCEDURE [dbo].[Usp_Sys_ImportData] @SourceDBName varchar(128),@TargetDBName varchar(128),@TableName varchar(128) AS
/*
存储过程名称:Usp_Sys_ImportData
功能简述:从来源数据库导入指定表数据到目标数据库
相关对象:
参数:@SourceDBName varchar(128) 来源数据库名称
@TargetDBName varchar(128) 目标数据库名称
@TableName varchar(128) 表名
*/
SET NOCOUNT ON;
declare @TempSql varchar(max)
--取来源表栏位(不包括计算列)
declare @T_SourceColumn Table(ColumnID int not null,ColumnName varchar(128) not null)
select @TempSql = ‘select t1.colid,t1.name‘
+char(10)+‘from ‘ + @SourceDBName + ‘..syscolumns t1‘
+char(10)+‘join ‘ + @SourceDBName + ‘..sysobjects t2 on t2.id = t1.id‘
+char(10)+‘where t2.name = ‘‘‘ + @TableName + ‘‘‘‘
+char(10)+‘ and t1.iscomputed = 0‘
+char(10)+‘order by t1.colid‘
insert into @T_SourceColumn(ColumnID,ColumnName)
exec(@TempSql)
--取目标表栏位(不包括计算列)
declare @T_TargetColumn Table(ColumnID int not null,ColumnName varchar(128) not null)
select @TempSql = ‘select t1.colid,t1.name‘
+char(10)+‘from ‘ + @TargetDBName + ‘..syscolumns t1‘
+char(10)+‘join ‘ + @TargetDBName + ‘..sysobjects t2 on t2.id = t1.id‘
+char(10)+‘where t2.name = ‘‘‘ + @TableName + ‘‘‘‘
+char(10)+‘ and t1.iscomputed = 0‘
+char(10)+‘order by t1.colid‘
insert into @T_TargetColumn(ColumnID,ColumnName)
exec(@TempSql)
--检查是否有自增列
declare @T_TargetIdentityColumn Table(ColumnID int not null,ColumnName varchar(128) not null)
select @TempSql = ‘select t1.colid,t1.name‘
+char(10)+‘from ‘ + @TargetDBName + ‘..syscolumns t1‘
+char(10)+‘join ‘ + @TargetDBName + ‘..sysobjects t2 on t2.id = t1.id‘
+char(10)+‘where t2.name = ‘‘‘ + @TableName + ‘‘‘‘
+char(10)+‘ and t1.colstat = 1‘
+char(10)+‘order by t1.colid‘
insert into @T_TargetIdentityColumn(ColumnID,ColumnName)
exec(@TempSql)
declare @HasIdentityColumn int
if exists(select * from @T_TargetIdentityColumn)
begin
select @HasIdentityColumn = 1
end
else
begin
select @HasIdentityColumn = 0
end
--取要导入的栏位(共同的栏位)
declare @ColumnList varchar(max)
select @ColumnList = ‘‘
select @ColumnList = @ColumnList + ‘,‘ + t1.ColumnName
from @T_SourceColumn t1,
@T_TargetColumn t2
where t1.ColumnName = t2.ColumnName
order by t1.ColumnID
if left(@ColumnList,1) = ‘,‘
begin
select @ColumnList = substring(@ColumnList,2,len(@ColumnList) - 1)
end
if @ColumnList < > ‘‘
begin
--构造导入数据的SQL
declare @ExecSql varchar(max)
select @ExecSql = ‘alter table ‘ + @TargetDBName + ‘..‘ + @TableName + ‘ disable trigger all‘
+ char(10) + ‘delete from ‘ + @TargetDBName + ‘..‘ + @TableName
if @HasIdentityColumn = 1
begin
select @ExecSql = @ExecSql + char(10) + ‘set identity_insert ‘ + @TargetDBName + ‘..‘ + @TableName + ‘ on‘
end
select @ExecSql = @ExecSql + char(10) + ‘insert into ‘ + @TargetDBName + ‘..‘ + @TableName + ‘(‘ + @ColumnList + ‘)‘
+ char(10) + ‘select ‘ + @ColumnList + ‘ from ‘ + @SourceDBName + ‘..‘ + @TableName
if @HasIdentityColumn = 1
begin
select @ExecSql = @ExecSql + char(10) + ‘set identity_insert ‘ + @TargetDBName + ‘..‘ + @TableName + ‘ off‘
end
select @ExecSql = @ExecSql + char(10) + ‘alter table ‘ + @TargetDBName + ‘..‘ + @TableName + ‘ enable trigger all‘
print @ExecSql
--执行导入
exec(@ExecSql)
if @@error = 0
begin
return 1
end
else
begin
return -1
end
end
else
begin
return 1
end
http://www.lmwlove.com/ac/ID807
利用Sql实现将指定表数据导入到另一个数据库示例
标签:
热心网友
时间:2022-05-01 14:19
如果数据库在一台机器上,可以用sql语句实现,方法是在表前面加入实例名,insert 实例名.biao (字段列表) select (字段列表) from 实例名.biao
如果不是,我一般都是用查询结果复制,然后再到另外一个表中编辑模式下的黏贴结果的。
热心网友
时间:2022-05-01 15:37
......表示字段列表
insert into b.dbo.dept(.....) select ... from a.dbo.dept
mysql的话不用写.dbo
提交回答
热心网友
时间:2022-05-01 17:12
如果是在同一个服务器上,可以直接用SQL语句执行,大概写法如下:
insert into B.dbo.dept ( col1,col2,.... )
select col1,col2,...
from A.dbo.dept
热心网友
时间:2022-05-01 19:03
如果是在同一个服务器上,可以直接用SQL语句执行。
SQL(英文全称:Structured Query Language),即结构化查询语言。SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言。在使用它时,只需要发出“做什么”的命令,“怎么做”是不用使用者考虑的。
SQL功能强大、简单易学、使用方便,已经成为了数据库操作的基础,并且现在几乎所有的数据库均支持SQL。
热心网友
时间:2022-05-01 21:11
select * into b..dept from a..dept
select * into b..emps from a..emps
sql如何将一 个数据库里的某一个表导入另一个数据库同名的表里
如果是在同一个服务器上,可以直接用SQL语句执行,大概写法如下:insert into B.dbo.dept ( col1,col2,... )select col1,col2,...from A.dbo.dept
如何将一个数据库中的一个表复制到另一个数据库中的表中
如果是追加到另一个表中 inert into b数据库.dbo.a表 select * from a数据库.dbo.a表 where 条件 不同数据库的格式: [数据库名.所有者名.表名]INSERT INTO 数据库B.dbo.表2 SELECT * FROM 数据库A.dbo.表1 WHERE ...
sql怎样把一个表导入我另一个数据库已存在的表中。。。
如果另一个表已经存在,用INSERT INTO 比如:有两个表A(A1,A2,A3),B(B1,B2) 我要将A表的A1,A2数据导入到B表中,语句如下 INSERT INTO B(B1,B2)SELECT A1,A2 FROM A 两对应的字段数据类型要求一样,否则可能会出错
SQL语句 怎么把一个表的数据复制到另外一个表里面
1、打开SQL,登录到一个数据库中,依次点击“工具”——“导出表”,在弹出的界面中选择一个用户,列出这个用户下面的所有表。2、在列出的表中选择其中一个,然后选择下面的“SQL插入”选项卡,在“输出文件”选择框中选择一个路径并填写文件名,然后点击“导出”按钮,则可导出一个关于该表结构和记录...
MSSQL里面如何把一个数据库表的内容,完全导入到另一个数据库的表当中...
在企业管理器里操作如下 1、右键点A库,选导出数据 2、根据导出/导入向导,一步一步做,到第三步的时候,选择“用一条查询指定要输出的数据”,点下一步 3、输入查询语句select * from a 一直点下一步,直到把向导完成。4、在B库中会出现一个叫“结果”的表,重新命名这个表就可以了。
sql如何把一个数据库中的表 复制到另一个数据库中去
用临时表备份你的数据表 再在另一个库去吧临时表示局倒腾到你的表中 或者再用备份表方式将临时表及其数据本分到你的库中 备份表及其数据语法:select 表.字段(即列),表.字段2,表.字段3 into 新表名字 from 原来的表 即是上面的"表.字段"的表 临时表只要加个#符号就表示临时表 ...
SQL SERVER中,如何把一个表中的数据导入到另一个表中?(不同数据库之间...
不同数据库之间的表导入方法:1:选择目标数据库——鼠标右键——任务——导入数据。2:配置数据库来源 3:配置完成后选择下一步,设置目标数据库。4:目标传输方式最好是选择,Microsoft OLE DB Provider for SQL Server方式,然后设置目标数据库服务器地址,使用SQL Server 身份验证,设置好账号密码后...
SQL SERVER 数据库 怎么从一个服务器一个表中把数据插入到另一个服务...
select * from srv_lnk.数据库名.dbo.表名 --导入示例:select * into 表 from srv_lnk.数据库名.dbo.表名go--以后不再使用时删除链接服务器 exec sp_dropserver ''srv_lnk'',''droplogins''二、--如果只是临时访问,可以直接用openrowset --查询示例:select * from openrowset(''SQLOLEDB'...
sql server怎样把一个数据库中的表移动到另一个数据库中
第一步,复制表结构:在表上面右击——>编写表脚本为:——>Create到——>新查询编辑器窗口,你也可以保存为sql文件,将新查询编辑器窗口最上面的一句话USE [olddatabase]中的“olddatabase”修改为“newdatabase”,其中olddatabase为源数据库名,newdatabase为目标数据库名,点击上面的“执行”按钮...
sql Server数据库如何将一个库中的数据导入另一个库中
如果是一个实例下的不同数据库的话,跟操作同一个库时是一样的 只要在要操作的表前面添加数据库名相关信息就可以了 如:select into test1.dbo.to from test2.dbo.from 如果是不同实例的数据库之间的导入就比较麻烦了,首先需开启Distributed Transaction Coordinator服务 然后给你个例子 --以下例子...