2016-06-20 22 views
0

Ich habe eine SQL-Datei von mysqldump eine Datenbank letzten Monat. Nun sind alle Tabellen in der Datenbank sind, eine zusätzliche Spalte hinzugefügt, sagen:mysql: Spalten Standardwerte für den Einsatz setzen

country varchar(20) not null. 

wie die Dump-Datei in die Datenbank mit Land „US“ gesetzt importieren? Die Datenbank enthält Daten aus anderen Ländern, sodass die Datenbank nicht gelöscht und neu erstellt werden kann.

manuell brauche ich zwei Dinge auf die Deponie SQL-Datei zu tun:

1. remove all create table statements, 
2. add country("US") to all insert statements. 

Aber die SQL-Dump-Datei ist sehr groß. Gibt es einen guten Weg, dies zu erreichen? Danke.

+1

Die abgeladen Datei enthält nicht die Spalte 'country', nicht wahr? Und Sie möchten in allen Tabellen mit dem Wert "US" die Spalte "country" hinzufügen? Habe ich recht? – 1000111

+0

Der sauberste Weg, dies zu tun, könnte ein Standardwert für die 'country'-Spalte sein, aber dies würde erfordern, dass Sie eine 'ALTER TABLE'-Anweisung ausgeben können, und dass der Wert' US' für alle wünschenswert ist. –

+0

Ich würde die N Tabellen finden, die damit verwandt sind, kopieren Sie den Speicherauszug in einen anderen Dateinamen. Verändern Sie die Tabellennamen mit einem find-and-replace-all zu neuen Tabellennamen für diese N. Beachten Sie, dass dies neue Tabellennamen sind. Führen Sie das Skript aus. Jetzt hat Ihre Datenbank N neue Tabellen, die nur US sind. Vorgehen. Fahren Sie fort mit der Bedeutung, was Sie danach tun wollten (wie zum Beispiel ein Einfügen in die anderen Tabellen? Mit US als Literal auf der Einfügung?) – Drew

Antwort

0

ALTER TABLE your_table ADD Land varchar (20) default "US"

+0

Die Datenbank läuft hinter einer Web-App, und viele Benutzer greifen gleichzeitig darauf zu . Es umfasst etwa 200 Tabellen. Ist das Ändern der Tabelle sicher genug? Gibt es einen programmatischen Weg (Werkzeuge), um die ausgelagerte SQL-Datei zu verarbeiten? Vielen Dank. – Dave

+0

Ich denke alter_table ist die beste Option. Führen Sie Ihre Arbeit in den Stunden mit weniger Benutzern aus und verwenden Sie ein Protokoll, um Abfragen ab dem Zeitpunkt Ihres Speicherauszugs zu registrieren. Sie können ein Skript verwenden, um alle Tabellen zu iterieren und das Update durchzuführen. Wenn Sie kein Protokoll Ihrer Operation haben, können Sie diff unter Unix verwenden, um den Unterschied zwischen zwei Dateien zu vergleichen, den Unterschied zu speichern und den Abfragen eine aktualisierte DB zu geben – CiroRa

Verwandte Themen