如何将来自不同供应商的不同数据库的不同列的数据合并到一个表中?

时间:2010-06-24 16:46:22

标签: mysql sql-server database oracle integration

假设我在mysql中有一个名为tbl1的表: -

bookid int
name varchar(20)
price int
categoryid int

然后我在Oracle中有第二个表,tbl2: -

pubid int
name varchar(20)
addr varchar(50)

我想将这两个结合到名为tbl3的MS Sql Server 2008中,其结构应为: -

bookid int
name varchar(20)
price int
pubid int
name varchar(20)

请注意,我知道这些表没有意义,但我只需要这个概念是否可行。如果是,那怎么样?我应该写哪些查询?我不想使用Sql Server Integration Services。

提前致谢:)

2 个答案:

答案 0 :(得分:1)

您需要能够与每个数据库通信的内容。如果SQL Server是desination,并且您不想使用DTS / SSIS,那么您可以使用Linked Servers。唯一的问题是Oracle的数据如何与来自MySQL的数据相关,因为没有匹配的列。无论如何,如果你有一个名为“ORACLESERVER”的链接服务器和另一个名为“MYSQLSEVER”的链接服务器,你可以做类似的事情(假设name是链接列):

Insert SqlServerDbName.SchemaName.TableName(....)
Select ...
From ORACLESERVER.DbName.SchemaName.tbl1 As T1
    Join MYSQLSERVER.DbName.SchemaName.tbl2 As T2
        On T2.name = T1.name

另一种解决方案是使用OPENROWSET来获得类似的结果。

答案 1 :(得分:0)

他们是否有一个可以运行联接的公共列。例如,第一个表中的categoryid与第二个表中的pubid匹配。 table1中的名称是否与table2中的名称匹配。如果是这样的名称是密钥,则没有其他书具有彼此相同的名称。如果是,则使用name作为公共密钥在表上运行连接。

如果没有公共密钥,那么您可以select * from table1, table2, ..., tablen。这将成为一个非常大的表。如果您连接两个表,每个表有12行,那么结果表总共会有12*12 = 144行。

相关问题