2017-06-15 2 views
0

Ich habe eine WordPress-Website. Ich habe eine Staging-Kopie der Site erstellt, damit wir unsere Änderungen dort vornehmen können. Jetzt sind wir mit den Änderungen fertig und möchten die neuen Dateien und die Datenbank der Staging-Site auf Live hochladen. Der Catch ist, wir wollen nur neue/mutierte Zeilen aus der .sql-Datei der Staging-Site importieren und vorhandene Zeilen auf der Live-Site behalten. Unsere wp_posts-Tabelle auf Live enthält viele bestehende Bestellungen, so dass wir nicht wollen, dass die gesamte Tabelle überschrieben wird, wenn Sie wissen, was ich meine.Importieren Sie nur neue Zeilen in bestehende Tabelle mit phpMyAdmin

Was ist der beste Weg, um dies mit phpMyAdmin zu erreichen? Es macht uns auch nichts aus, dies mit mysql-Befehlen zu tun. Bitte erkläre.

+0

Werden Sie auch Zeilen auf der Live-Website aktualisieren, die auf der Staging-Website geändert wurden? –

+0

ja, alle geänderten und neuen Zeilen müssen aktualisiert/hinzugefügt werden – mdarmanin

Antwort

0

versuchen, etwas wie folgt aus:

mysqldump --no-create-info --insert-ignore --quick --where="id between from and to" <db> <table> > table.sql 

NB: in --set-gtid-purged=OFF: wenn GTID aktiviert ist und wollen nicht zu erfassen.

--no-create-info: um das Schema zu ignorieren, das erneut ausgeführt werden soll.
--insert-ignore: fügen Sie insert ignore Anweisung statt insert hinzu, wenn die ID bereits vorhanden ist, ignorieren Sie diese.
--where: angeben, welcher Bereich der Inszenierung Sie auf prod wiederherstellen zurück wollen

EDIT:

--replace: ersetzen --insert-ignore mit --replace wenn Sie doppelte Zeilen wollen nicht

+0

Dies wird keine bestehenden Zeilen aktualisieren, deren Daten geändert wurden –

+0

--replace hinzufügen, wenn auch bestehende IDs geändert werden sollen. – avisheks

0

In der ignoriert werden ersetzt sql Datei, die Sie importieren durch PHPMyAdmin, ändern Sie alle INSERT Anweisungen zu REPLACE

REPLACE INTO `table_name` (`id`, `column_name`) VALUES (1, 'some_value') 

The manual for REPLACE heißt es:

Werke REPLACE genau wie INSERT, mit der Ausnahme, dass, wenn eine alte Zeile in der Tabelle für einen Primärschlüssel oder einen eindeutigen Index den gleichen Wert wie eine neue Zeile hat, die alte Zeile gelöscht, bevor die neue Zeile eingefügt wird

dh die alte Zeile wird durch die neue Zeile ersetzt.

Beachten Sie, dass dies für Tabellen mit UNIQUE Index oder PRIMARY KEY nicht funktioniert. Da dies jedoch eine Wordpress-Seite ist, denke ich, dass es kaum einen solchen Tisch geben wird.

+0

, aber das wird einen Datensatz zu einer Zeit ersetzen oder was? – mdarmanin

+0

Es wird einfach neue Datensätze hinzufügen und bestehende aktualisieren (bei bestehenden, ich meine Datensätze mit dem gleichen Primärschlüssel - die alle Wordpress-Standardtabellen haben - oder eindeutigen Index). –

Verwandte Themen