9
votes

Mysql - mysqldump --Routines à exporter uniquement 1 procédure stockée (par nom) et pas toutes les routines

Nous avons donc beaucoup de routines qui sortent d'exportation. Nous avons souvent besoin de les sortir dans CLI, de faire des changements et de les ramener. Oui, certaines d'entre elles sont gérées par des personnes différentes et un meilleur contrôle des changements est nécessaire, mais pour l'instant c'est la situation.

Si je FAIRE: P>

mysqldump --routines --no-create-info --no-data --no-create-db


0 commentaires

5 Réponses :


6
votes

Pour répondre à votre question exacte: non.

Mais cela vous donnera probablement ce que vous voulez.

Jetez un coup d'oeil à Afficher Créer une procédure et Afficher la fonction Créer :

http://dev.mysql.com/ DOC / REFMAN / 5.0 / FR / show-create-procédure.html

http://dev.mysql.com/ DOC / REFMAN / 5.0 / EN / show-Create-Fonction.html

Ces commandes vous permettent de jeter le code pour une routine à la fois.


0 commentaires

14
votes

Une autre façon d'y aller ce serait ce qui suit. Notez cependant que vous devez avoir des privilèges root dans la base de données cible afin d'importer des lignes dans mysql.proc: xxx


1 commentaires

Pour restaurer le script créé par cette décharge, vous devez qualifier manuellement la référence de la table «PROC 'TABLE). Toutefois, en général, je trouve la sortie de cette méthode beaucoup plus flexible que la méthode traditionnelle MySqldump -Routines. Merci!



4
votes

Il est possible de vider une seule fonction ou une procédure à l'aide de la commande que Ike Walker a mentionné, mais le Afficher crée procédure code> et Afficher la fonction Créer une fonction code> ne permet pas de Sélectionnez seulement quelques colonnes à partir de la sortie.

Voici un exemple d'une ligne de commande Windows Batch pour vider une seule procédure, à l'aide de la table système mysql.proc code>: p>

set routine_type=FUNCTION


3 commentaires

où définir cette variable% en-tête%


@ Bill.zhuang merci pour l'observation. Cette variable provient d'une ancienne version où j'ai défini le nom de la colonne dans une autre partie du script. J'ai testé cette nouvelle solution uniquement en remplacement du nom de la base de données et du fichier par défaut, et cela fonctionne.


Pour une raison quelconque, cela perd toute la sortie s'échappant dans des cordes dans le corps de la procédure stockée.



2
votes

J'ai écrit la solution dans Bash.

pour une procédure xxx

pour toutes les procédures xxx


0 commentaires

0
votes

C'est astuce,

  1. Créer une base de données sur local.

  2. Dump Votre base de données incluez votre procédure de magasin sur local. ou Il suffit d'utiliser la base de données MySQL * YOG et COPY, vérifiez la procédure de magasin (exemple: une procédure de stockage) sur le serveur local.

  3. vider votre base de données locale. Ouais, vous avez une procédure de stockage dans votre décharge. N'oubliez pas d'utiliser --Routine si vous voulez SP / événements uniquement.

    Truc est amusant, n'est pas paresseux, juste trompé.


0 commentaires