我只需要转储存储过程:无数据,无表创建。如何使用mysqldump做到这一点?

评论

这个问题+1,因为数据库世界中有很多开发人员喜欢在MySQL之外的版本控制软件中对存储过程进行编目,而我愿意这样做(我自己不喜欢这样做)。

在我的情况下,该命令给我一个错误mysqldump:得到错误:23:“打开文件时资源不足”,我有--single-transaction选项来解决此错误。如果只需要例程,则可以添加--no-create-info以避免创建表语句。

#1 楼

这应该为您做到:存储过程将在原本打算的数据库中创建。触发器也是如此。这将是更可取的:

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.


评论


我尝试了这一点,不得不添加'-t'选项以不获取创建表语句。

–德里克·唐尼(Derek Downey)
11年7月25日在16:21

忘了一个,太可惜我不能投票。我更新了第一个mysqldump命令以包括它。应该省略第二个触发器,以将每个触发器与其基表相关联。再次感谢@DTest !!!

– RolandoMySQLDBA
2011年7月25日在16:30



没问题。就我而言,我只是想为特定数据库存储函数/过程,而不是触发器。所以效果很好

–德里克·唐尼(Derek Downey)
2011年7月25日在16:43