Sql 从不同数据库中的表复制数据
我有两个数据库:带有表1的DataB1和带有表2的DataB2Sql 从不同数据库中的表复制数据,sql,Sql,我有两个数据库:带有表1的DataB1和带有表2的DataB2 Table1 has : field1, field2, filed3 Table2 has : fielda, fieldb, fieldc 字段名称不同,但数据类型相同 问题:如何执行存储过程以打开数据库并将其从表1复制到表2?您没有指定数据库服务器,但大多数都有插入。。。选择: INSERT INTO DataB2.Table2 (fielda,fieldb,fieldc) SELECT field1,field2,
Table1 has : field1, field2, filed3
Table2 has : fielda, fieldb, fieldc
字段名称不同,但数据类型相同
问题:如何执行存储过程以打开数据库并将其从表1复制到表2?您没有指定数据库服务器,但大多数都有
插入。。。选择
:
INSERT INTO
DataB2.Table2 (fielda,fieldb,fieldc)
SELECT field1,field2,field3
FROM DataB1.Table1
如果您只是想方便地查看另一个数据库中的数据,那么更好的选择可能是查看
CREATE VIEW
DataB2.View2
AS SELECT
field1 AS fielda,
field2 AS fieldb,
field3 AS fieldc
FROM DataB1.Table1
您可以通过插入来完成此操作。在大多数数据库中,它看起来像:
insert into datab1.table1(field1, field2, field3)
select fielda, fieldb, fieldc
from datab2.table2;
如果还涉及架构名称,则某些数据库可能具有由三部分组成的命名约定
编辑:
使用由三部分组成的命名约定,它可能类似于:
insert into datab1.dbo.table1(field1, field2, field3)
select fielda, fieldb, fieldc
from datab2.dbo.table2;
它不是一个存储过程,但它要早得多。在SSMS中,右键单击源数据库节点,选择任务->导出数据。请访问msdn.microsoft.com/en-us/library/ms140052.aspx了解更多信息每个数据库都有自己的方法。
例如,在Firebird 2.5中,您可以执行相同的操作:
execute block
returns(ID_N Integer, ID_R Integer)
as
begin
For
select ID from TABLE into :ID_N
Do
Begin
ID_R=0;
execute statement 'select ID from TABLE where ID='||:ID_N
on external data source 'Path_to_remote_database'
as user current_user password 'user_password'
into :ID_R;
if (:ID_R>0) then
suspend;
End
end;
此代码显示来自两个表的匹配ID。所以,使用“在外部数据源上执行语句”,您可以完成所有需要的操作。哪些数据库?您不能简单地使用数据库链接吗?这仅适用于Microsoft SQL Server,并不能真正回答如果涉及架构,会是什么样的问题?