2017-11-02 2 views
1

Entschuldigung für eine grundlegende Frage, aber ich habe wirklich meine eigene Forschung versucht, aber ich kann nicht einmal die richtige Syntax für diese Frage finden, und so Ich finde keine Lösung.Importieren neuer Datenbank in alte Datenbank, wie man Werte alter Datenbank [PHPMyAdmin]

Ich habe eine Datenbank mit einer Anzahl von Tabellen, Spalten, Zeilen usw. in einem Online-System. Ich habe das System massiv offline aktualisiert und es ist bereit, diese Woche live zu gehen. Einige der Tabellen wurden jedoch geändert, einige neue Tabellen wurden hinzugefügt usw. aufgrund neuer Funktionen innerhalb des Systems.

Meine Frage ist: Kann ich meine Datenbank mit den stark geänderten Tabellen aktualisieren, aber die vorherigen Informationen nicht löschen? Zum Beispiel: Sagen wir, ich habe eine Tabelle im alten System namens Benutzer, die den Benutzernamen und das Passwort verfolgt. Aber ich habe das System aktualisiert, und jetzt die Benutzer Tabellen Tracks Benutzername, Passwort, Name, Alter, Geburtsdatum, Punkte ... was auch immer, viel mehr Informationen als zuvor.

Was ich möchte, ist, dass ich die Tabelle (und die gesamte Datenbank) aktualisieren, so dass die neuen Spalten und Tabellen usw. erscheinen, aber ich verliere die Informationen aus der vorherigen Iteration nicht. So würde ich nicht für Benutzer Kennwort/Benutzername usw. neu eingeben müssen.

Wenn ich diese Frage suche, bekomme ich nur Antworten, die sagen, dass ich die neuen Tabellen/Spalten manuell eingeben kann, oder fälschlicherweise denke ich, dass ich nach Verkettung von Werten frage, aber das ist nicht meine Absicht.

Idealerweise möchte ich eine IMPORT der neuen Datenbank in die alte Datenbank.

Jede Hilfe würde sehr geschätzt werden.

+0

Haben Sie Daten in Ihrer neuen Datenbank? –

+0

Ja, und realistisch gesehen muss ich es dort aufbewahren, da es sensible/verschlüsselte Informationen enthält. – cmprogram

+0

Als ich "neue Datenbank" schrieb, meinte ich nicht, dass Ihr System gerade online ist. –

Antwort

2

Zuerst empfehle ich Ihnen dringend, eine Sicherungskopie Ihrer Produktionsdaten zu erstellen und diese praktisch zu halten. Sie werden es viele Male wiederherstellen, um wieder in den "Original" -Zustand zu gelangen, während Sie Ihre Datenintegration entwickeln.

Stellen Sie die Sicherungskopie in einer anderen Datenbank auf Ihrer lokalen MySQL Server-Instanz wieder her. Sie werden eine Menge Tests durchführen müssen, wenn Sie lernen, wie die Datenintegration durchgeführt wird, und einige davon werden destruktiv sein.

Der Prozess wird eine Reihe von Skriptänderungen gegen Ihre lokale Kopie der Produktionsdatenbank ausführen, dann sehen, ob es wie gewünscht funktioniert. Ist dies nicht der Fall, löschen Sie die lokale Kopie der Produktionsdatenbank und stellen Sie sie wieder her, korrigieren Sie Fehler in den Datenintegrationsschritten, und versuchen Sie es erneut. Dies kann Tage dauern, um Recht zu bekommen, und viele wiederholte Hinrichtungen.

So haben Sie zwei Aufgaben:

  1. die Tabellenstruktur Ihrer Produktionsdatenbank aktualisieren, die Ihre lokal geändert Datenbank übereinstimmen. Sie können ALTER TABLE verwenden, um viele solche Änderungen vorzunehmen.

    Dies ist eine komplexe Aufgabe, da es schwierig sein kann, zwei verschiedene Tabellen zu analysieren und den minimalen Satz von ALTER TABLE-Anweisungen herauszufinden, die benötigt werden, um eines zu aktualisieren, damit es wie das andere ist. Eine der MySQL-Dienstprogramme kann dabei helfen: mysqldiff. Sie können es verwenden, um die benötigten ALTER TABLE-Anweisungen zu generieren.

  2. Synchronisieren Sie Ihre lokalen Daten in die Produktionsdatenbank.Dies ist komplex, weil Sie einige Daten haben, die die vorhandenen Produktionsdaten teilweise überschreiben sollten. Sie sollten lernen, wie man REPLACE und INSERT...ON DUPLICATE KEY UPDATE verwendet.

    Siehe meine Antwort auf “INSERT IGNORE” vs “INSERT … ON DUPLICATE KEY UPDATE” für einige nützliche Erklärungen dazu.

    Sie können UPDATE-Anweisungen auch ausführen, um Tabellen aus verschiedenen Datenbanken zu verknüpfen. Dies ist hilfreich, wenn Sie Daten basierend auf einem gemeinsamen Wert in einer bestimmten Spalte ersetzen möchten, die Spalte jedoch nicht eindeutig ist, sodass Sie REPLACE nicht verwenden können.

Dies wird ein harter, sorgfältiger Prozess sein. Die meisten professionellen Softwareentwicklungsprojekte haben damit zu kämpfen. Sie müssen sehr vorsichtig sein, um jede Änderung an ihren Tabellen zu skandieren, und sie verwenden "Schemamigration" -Tools, um die inkrementellen Änderungen gegen jede Datenbank anzuordnen, sodass die Zieldatenbank auf jede Revision aktualisiert werden kann.

Aber versuchen, all diese inkrementellen Änderungen herauszufinden, nachdem Sie eine Reihe von ihnen in der Entwicklung getan haben, ist wie der Versuch, einen Kuchen zu backen.

0

Da Sie mysql Server ausführen, könnten Sie einfach eine Abfrage schreiben, um die Daten zu importieren.

CREATE TABLE [dbo].[oldTable](
    [Pass] [varchar](50) NULL, 
    [Username] [varchar](50) NULL 
) ON [PRIMARY] 

Insert into oldTable (Pass,Username) 
Select 'pass', 'user' 

CREATE TABLE [dbo].[newTable](
    [Pass] [varchar](50) NULL, 
    [Username] [varchar](50) NULL, 
    [OtherColumn] [varchar](50) NULL 
) ON [PRIMARY] 

Insert into newTable (Pass,Username) 
Select 'pass2', 'user2' 
+0

Diese Antwort verwendet Microsoft SQL Server-Syntax, trotz der Bestätigung der OP verwendet MySQL. Es ist wirklich üblich, dass Microsoft-Benutzer nicht verstehen, dass andere Datenbankprodukte existieren oder dass andere Produkte eine andere Syntax haben. –

Verwandte Themen