Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 从不同数据库中的表复制数据_Sql - Fatal编程技术网

Sql 从不同数据库中的表复制数据

Sql 从不同数据库中的表复制数据,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,

我有两个数据库:带有表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,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,并不能真正回答如果涉及架构,会是什么样的问题?