我从MSSQL DB(“A”)获取数据并使用MSSQL DB中创建的日期插入MySQL DB(“B”)。我是用简单的逻辑做的,但必须有一种更快,更有效的方法。以下是所涉及的逻辑序列:
为MSSQL DB创建一个连接,为MySQL DB创建一个连接。
从A中获取符合所提供日期范围标准的所有数据。
检查B中没有获得哪些数据。
将这些新数据插入B。
你可以想象,第2步基本上是一个循环,它可以很容易地最大化服务器上的时间限制,我觉得必须有一种方法可以更快地和第一次查询时这样做。任何人都能指出我正确的方向来实现这一目标吗?你可以与两个DB建立“一个”连接并执行类似下面的操作吗?
SELECT * FROM A.some_table_in_A.some_column WHERE
"it doesn't exist in" B.some_table_in_B.some_column
答案 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...
,它将尝试插入所有记录,以静默方式跳过已存在主键的记录。