MySQL - mysqldump --routinen, um nur eine gespeicherte Prozedur (nach Namen) und nicht jede Routine zu exportieren

7

Wir haben also eine Menge Routinen, die beim Export entstehen. Wir müssen diese oft in CLI herausholen, Änderungen vornehmen und sie wieder einbinden. Ja, einige davon werden von verschiedenen Leuten verwaltet, und eine bessere Änderungskontrolle ist erforderlich, aber im Moment ist dies die Situation.

Wenn ich das tue:

%Vor%

dann toll, ich habe 200 Funktionen. Ich muss eine Datei durchgehen, um genau das zu finden, was ich möchte.

Gibt es sowieso mysqldump Routinen, die ich gerne für Tabellen haben möchte?

    
Joe Stein 25.03.2010, 18:52
quelle

4 Antworten

4

Um Ihre genaue Frage zu beantworten: Nein.

Aber das wird Ihnen wahrscheinlich geben, was Sie wollen.

Sehen Sie sich SHOW CREATE PROCEDURE und SHOW CREATE FUNCTION an:

Ссылка

Ссылка

Mit diesen Befehlen können Sie den Code für jeweils eine Routine ausgeben.

    
Ike Walker 25.03.2010, 19:29
quelle
13

Eine andere Möglichkeit, dies zu tun, wäre das Folgende. Beachten Sie jedoch, dass Sie Root-Rechte in der Zieldatenbank haben müssen, um Zeilen in mysql.proc zu importieren:

%Vor%     
Itamar Haber 16.08.2011 14:56
quelle
4

Es ist möglich, eine einzelne Funktion oder Prozedur mit dem Befehl, den Ike Walker erwähnt, auszugeben, aber die Befehle SHOW CREATE PROCEDURE und SHOW CREATE FUNCTION erlauben nicht, nur ein paar Spalten aus der Ausgabe auszuwählen.

Hier ist ein Beispiel für eine Windows-Stapelbefehlszeile zum Ablegen einer einzelnen Prozedur unter Verwendung der Systemtabelle mysql.proc :

%Vor%

Dadurch wird die Ausgabe von mysql in die Datei meinprozedur.sql umgeleitet.

Die Option --batch weist den mysql-Client an, die Tabellenrahmen aus der Ausgabe zu entfernen. Die Option --skip-column-names entfernt die Spaltenüberschriften aus der Ausgabe. Die Option --raw weist MySQL an, Sonderzeichen in der Ausgabe nicht zu ignorieren, indem neue Zeilen so beibehalten werden, wie sie sind, anstatt sie durch \n zu ersetzen.

Und wenn Sie alle Prozeduren in verschiedenen Dateien ablegen wollen, sollte dieses Beispiel im Batch funktionieren:

dump-procedures.bat

%Vor%

Es funktioniert in 2 Schritten, wo es zuerst die Liste aller Prozeduren in die Datei procedures.csv ablegt und dann in jeder Zeile iteriert und die Namen der Prozeduren verwendet, um die einzelnen Prozeduren abzulegen eine andere Datei.

In diesem Beispiel verwende ich auch die Option - defaults-extra-file , in der einige Konfigurationsparameter in einer anderen Datei definiert sind, und ermöglicht das Aufrufen des Befehls, ohne dass der Befehl eingegeben werden muss jedes Mal ein Passwort eingeben oder das Passwort in die Charge schreiben. Ich habe eine Datei mit diesem Inhalt erstellt

myconfig.cnf

%Vor%

Diese Lösung funktioniert auch mit der Funktion und definiert die Variable routine_type zu:

%Vor%     
carlososuna86 02.09.2014 18:13
quelle
0

Ich habe die Lösung innerhalb von bash geschrieben.

Für eine Prozedur

%Vor%

Für alle Prozeduren

%Vor%     
sectus 15.09.2014 05:06
quelle

Tags und Links