假设我在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。
提前致谢:)
答案 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
行。