У меня есть имя студента таблицы с полями, именем и списком в базе данных my-sql. Кроме того, у меня есть один и тот же ученик табличного имени в базе данных MS-SQL с полями, именем и списком.
Когда значение, вставленное в мою студенческую таблицу базы данных MySQL, мне нужно автоматически вставить то же значение в таблицу студента базы данных MS-SQL.
У вас может быть 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);
}
Почему вы используете две отдельные базы данных, чтобы сделать то же самое? Вы не можете выбрать его? Если вы просто пытаетесь экспортировать и импортировать данные, вы должны иметь возможность экспортировать как 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.