Как скопировать несколько записей из таблицы на одном сервере в таблицу с такой же структурой на другом сервере в PHP и MySQL?

У меня две одинаковые базы данных MySQL на двух разных серверах. Первоначально обе базы данных имели одинаковую структуру и содержали одинаковые данные.

Но позже несколько новых записей (новых пользователей) были добавлены в обе таблицы. Это создало разницу в данных, представленных в этих таблицах.

Теперь проблема заключается в том, что старые данные (которые присутствуют с тех пор, когда структура и данные обеих баз данных были одинаковыми) из одной таблицы были подделаны каким-то несанкционированным способом, а в одном поле содержатся пустые значения.

Теперь я хочу вернуть эти данные, как и в предыдущем (как и в начале). Для этого мне нужно запустить запрос, который бы забрал недостающие данные из той же таблицы с одного сервера и добавил их в ту же таблицу на другом сервере, где возникла проблема подделки данных.

Если есть какой-то способ, написав какой-нибудь скрипт на PHP, который мог бы сделать эту работу, то это тоже будет хорошо для меня.

Кто-нибудь может подсказать, как мне этого добиться?

Если вы хотите получить более подробную информацию о проблеме, с которой я столкнулся, пожалуйста, дайте мне знать.

Благодарю.

1

Решение

Почему бы не экспортировать данные с другого сервера?

Затем импортируйте таблицу на текущий сервер (с другим именем или создайте новую базу данных)

ОБНОВИТЬ

Нет, это не заменит таблицу. Вы можете создать другую базу данных и импортировать ее в новую базу данных, а не в существующую.

Или вы редактируете файл экспорта и меняете имя, затем импортируете его.

пример:

Если это ваш файл экспорта:

CREATE TABLE IF NOT EXISTS `Customer` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`Name` char(32) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;

Измените имя (обратите внимание, я меняю клиента на customer2)

ЗАТЕМ сделать импорт.

CREATE TABLE IF NOT EXISTS `Customer2` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`Name` char(32) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;

ОБНОВЛЕНИЕ 2

Теперь у вас есть текущая таблица с пустым столбцом и «резервная копия» table2.

Обе таблицы должны иметь уникальный идентификатор или какой-либо вид.

Это основной сценарий:

Переберите все записи в таблице1, чтобы получить уникальное значение столбца идентификатора.

Используйте этот идентификатор, чтобы найти значение пустого столбца в таблице 2.

Обновите пустой столбец в таблице 1 со значения в таблице 2.

SELECT `id` FROM `table1` WHERE 1

SELECT `blankcolumn` FROM `table2` WHERE `id` = $row['id']

UPDATE `table1` SET `blankcolumn` = `table2`.`blankcolumn`
1

Другие решения

Я хотел бы создать RESTful API, позволяющий одному серверу GET, PUT, DELETE материал на другой сервер, используя JSON.

Таким образом, у одного сервера есть URL, на который вы можете отправить некоторые данные JSON (или XML, если вы действительно хотите).

Затем другой сервер выполняет запрос CURL и отправляет данные.

Возможно, вы захотите подождать, пока у вас не будет достаточно данных для одновременной отправки, поэтому вы не будете постоянно делать запросы между серверами.

Вы также можете защитить систему паролем, так что никто другой, кто это выяснит, не сможет редактировать вашу базу данных: P

Нам есть над чем поработать, но я думаю, что если вы посмотрите, как создать REST API в PHP, а также как делать запросы CURL, вы обнаружите, что это довольно просто. Вы также можете общаться с такой системой, используя JavaScript AJAX-вызовы, что открывает еще больше возможностей.

Некоторые типы баз данных и поставщики услуг баз данных (они запускают для вас db) могут масштабировать базы данных до нескольких экземпляров, чтобы делать подобные вещи. Это может стоить изучить также. Обычно происходит задержка, прежде чем базы данных совпадают друг с другом — это объясняет множество странностей на сайтах социальных сетей и аукционов / объявлений, где сообщение может не появиться для вас некоторое время.

Если данные имеют отношение к чему-то действительно важному, например, к финансовым транзакциям, где некоторое время не хватает денег недопустимо, вам, возможно, придется относиться к этому более серьезно.

0