1

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

  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
4

3 回答 3

3

链接服务器可能适合这个

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

也看看这个 HOWTO

于 2012-05-18T21:59:37.110 回答
0

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

于 2012-05-18T23:01:30.723 回答
0

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

于 2012-05-18T21:47:52.057 回答