2012-05-18 121 views
1

我从MSSQL DB(“A”)获取数据,并使用MSSQL DB中创建的日期插入MySQL DB(“B”)。我用简单的逻辑来做这件事,但要做到这一点,必须有更快更有效的方式。下面是涉及的逻辑顺序:同时查询MySQL和MSSQL数据库

  1. 为MSSQL DB创建一个连接,为MySQL DB创建一个连接。

  2. 从A获取符合日期范围标准的所有数据。

  3. 检查以查看哪个所获得的数据不存在于B.

  4. 插入这些新的数据到B.

可以想象,步骤2基本上是一个循环,这可以很容易地将时间限制在服务器上,并且我觉得必须有一种方法可以更快,并且在第一次查询时进行。任何人都可以指出我正确的方向来实现这一目标?你能否与这两个数据库建立“一个”连接并做下面的事情?

SELECT * FROM A.some_table_in_A.some_column WHERE 
    "it doesn't exist in" B.some_table_in_B.some_column 

回答

0

如果我理解你的问题是正确的,那么你只是试图将MSSQL DB中的东西移动到MySQL DB中。我还假设您正在使用某种过滤条件进行迁移。如果这是正确的,你可以尝试在MSSQL中使用存储过程,它可以使用分布式查询来查询MySQL数据库。然后,您可以使用该存储过程在数据库端执行循环或检查,并且前端服务器只需要建立一个连接。

3

一个linked server可能适合这个

链接服务器允许访问对OLE DB数据源的分布,异构 查询。在创建链接服务器之后,可以针对此服务器运行 分布式查询,并且查询可以从多个数据源中连接表中的 。如果链接的服务器是 定义为SQL Server实例,则可以执行远程存储过程 。

退房this HOWTO以及

0

如果MySQL数据库主键定义,则可以至少跳过步骤3(“检查以查看哪个所获得的数据不存在于B”)。使用INSERT IGNORE INTO...,它将尝试插入所有记录,静默跳过已存在主键记录的记录。