我有两个数据库:带有table1的DataB1和带有Table2的DataB2
Table1 has : field1, field2, filed3
Table2 has : fielda, fieldb, fieldc
不同的字段名称,但数据类型相同。
问题:如何执行打开数据库并从table1复制到table2的存储过程?
答案 0 :(得分:2)
您可以使用插入执行此操作。在大多数数据库中,它看起来像:
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;
答案 1 :(得分:0)
您没有指定数据库服务器,但大多数都有INSERT ... SELECT
:
INSERT INTO
DataB2.Table2 (fielda,fieldb,fieldc)
SELECT field1,field2,field3
FROM DataB1.Table1
如果您只是想轻松查看其他数据库中的数据,那么更好的选择可能是VIEW
。
CREATE VIEW
DataB2.View2
AS SELECT
field1 AS fielda,
field2 AS fieldb,
field3 AS fieldc
FROM DataB1.Table1
答案 2 :(得分:0)
这不是一个存储过程,但它早得多。在SSMS中,右键单击源数据库节点,选择任务 - >出口数据。有关详细信息,请访问msdn.microsoft.com/en-us/library/ms140052.aspx
答案 3 :(得分:0)
每个数据库都有自己的方法来完成它。 例如,在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。因此,使用“外部数据源上的执行语句”,您可以完成所需的一切。