MySQLのストアドプロシージャのみをダンプする


31

ストアドプロシージャのみをダンプする必要があります。データもテーブルも作成しません。mysqldumpを使用してこれを行うにはどうすればよいですか?


1
この質問のための1のように(私は、そう自分自身を行うためのファンではない)これをしたいと思っバージョン管理ソフトウェアで外のMySQLのストアドプロシージャをカタログすることをDBの世界では多くの開発者があるので
RolandoMySQLDBA

私の場合、このコマンドでエラーが表示されmysqldump: Got error: 23: "Out of resources when opening file"--single-transactionこのエラーを解決するオプションがありました。また、ルーチンのみが必要な場合は-no-create-info、create tableステートメントを避けるために- を追加できます。
ベドモン14年

回答:


34

これはあなたのためにそれを行う必要があります:

mysqldump -h... -u... -p... -n -d -t --routines --triggers --all-databases > MySQLStoredProc.sql

  -n, --no-create-db     Suppress the CREATE DATABASE ... IF EXISTS statement 
                         that normally is output for each dumped database if
                         --all-databases or --databases is given.
  -d, --no-data          No row information.
  --triggers             Dump triggers for each dumped table.
                         (Defaults to on; use --skip-triggers to disable.)
  -R, --routines         Dump stored routines (functions and procedures).
  -t, --no-create-info   Do not write CREATE TABLE statements that create each 
                         dumped table.

警告

特定のストアドプロシージャが目的のデータベースに作成されるように、データベースからストアドプロシージャを分離しない方がはるかに良いでしょう。トリガーについても同じことが言えます。これは望ましいでしょう:

mysqldump -h... -u... -p... -d --routines --triggers --all-databases > MySQLStoredProc.sql

9
私はこれを試して、テーブル作成ステートメントを取得しないために「-t」オプションを追加する必要がありました。
デレクダウニー

それを忘れてしまったので、コメントを支持できません。最初のmysqldumpコマンドを更新して追加しました。2番目のものは、すべてのトリガーをそのベーステーブルに関連付けるために省略します。再びありがとう、@ DTest !!!
RolandoMySQLDBA

問題ない。私の場合、トリガーではなく、特定のデータベースのストアド関数/プロシージャが必要でした。それでうまくいきました
デレクダウニー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.