将数据从mysql发送到MS-SQL数据库

时间:2011-05-10 03:09:53

标签: mysql sql sql-server data-migration

我有一个表名学生,在my-sql数据库中有字段,名称和滚动。另外,我在MS-SQL数据库中有一个相同的表名学生,包含字段,名称和滚动。

当一个值插入我的MySQL数据库学生表时,我需要自动将相同的值插入到MS-SQL数据库学生表中。

2 个答案:

答案 0 :(得分:1)

为什么你使用两个独立的数据库来做同样的事情?你不能选择一个吗? 如果您只是尝试导出和导入数据,您应该能够从一个数据库导出为csv并导入到另一个数据库中,然后只使用您需要的数据库。

如果不是,我想你可以编写一个包装两个数据库对象的类,并实际执行两个数据库上的每个查询。
例如:

public class database
{

public DbConnection mySqlConnection;
public DbConnection sqlConnection;
/// <summary>
/// open two db connections
/// </summary>
   public database()
   {
      mySqlConnection =//string that will open the mysql

      mySqlconnection = //insert string will open the sql server database
   }

   public excecuteNonQuery(String SQL)
   {
     //cmd1 = mysql command
     //cmd2 = mssql command

     cmd1.excecute(SQL);
     cmd2.execute(SQL);

   }
}

只需创建处理准备命令和插入数据的函数,以便在两个数据库上同时执行操作。我不知道将mysql数据库复制到mssql数据库的任何方法。

答案 1 :(得分:1)

你可以拥有一个经常运行的cron来插入它尚未见过的记录。

// Assuming the primary key is an id int auto_increment
startId = getLastIdFromPreviousRun();
lastId = 0;
offset = 0;
while(true) {
    mysqlrs = mysqlQuery(
        "SELECT * FROM users WHERE id > ? ORDER BY id LIMIT ?, 1000",
        startId,
        offset
    );
    if (!mysqlrs || mysqlrs.count() == 0)
        break;
    foreach(mysqlrs as mysqlrow) {
        mssqlInsert('users', mysqlrow);
        lastId = mysqlrow['id'];
    }
    offset += 1000;
}
if (lastId) {
    setLastIdForNextRun(lastId);
}