我有一个表名学生,在my-sql数据库中有字段,名称和滚动。另外,我在MS-SQL数据库中有一个相同的表名学生,包含字段,名称和滚动。
当一个值插入我的MySQL数据库学生表时,我需要自动将相同的值插入到MS-SQL数据库学生表中。
答案 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);
}