同时查询MySQL和MSSQL数据库

时间:2012-05-18 21:40:49

标签: mysql sql sql-server

我从MSSQL DB(“A”)获取数据并使用MSSQL DB中创建的日期插入MySQL DB(“B”)。我是用简单的逻辑做的,但必须有一种更快,更有效的方法。以下是所涉及的逻辑序列:

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

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

  3. 检查B中没有获得哪些数据。

  4. 将这些新数据插入B。

  5. 你可以想象,第2步基本上是一个循环,它可以很容易地最大化服务器上​​的时间限制,我觉得必须有一种方法可以更快地和第一次查询时这样做。任何人都能指出我正确的方向来实现这一目标吗?你可以与两个DB建立“一个”连接并执行类似下面的操作吗?

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

3 个答案:

答案 0 :(得分:3)

linked server可能适合此

  

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

同时查看this HOWTO

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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