首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用mysqldump编写存储过程来分隔文件?

如何使用mysqldump编写存储过程来分隔文件?
EN

Stack Overflow用户
提问于 2010-04-27 20:58:54
回答 4查看 4K关注 0票数 3

mysqldump选项--tab=path将每个表的创建脚本写在单独的文件中。但是我找不到存储过程,除了在屏幕转储中。

我还需要将存储过程放在单独的文件中。

我目前正在研究的解决方案是以编程方式拆分屏幕转储。有没有更简单的方法?

到目前为止,我使用的代码是:

代码语言:javascript
复制
#save all routines to a single file
mysqldump -p$PASSWORD --routines --skip-dump-date --no-create-info --no-data --skip-opt $DATABASE > $BACKUP_PATH/$DATABASE.sql
#save each table to its file
mysqldump -p$PASSWORD --tab=$BACKUP_PATH --skip-dump-date --no-data --skip-opt $DATABASE

即使我将--routines添加到第二个命令中,它们也不会获得自己的文件。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-06-11 05:57:50

mysqldump命令不支持将存储过程转储到单个文件中。

但是,可以使用mysql命令完成此操作。

代码语言:javascript
复制
mysql --skip-column-names --raw mydatabase -e "SELECT CONCAT('CREATE PROCEDURE `', specific_name, '`(', param_list, ') AS ') AS `stmt`, body_utf8 FROM `mysql`.`proc` WHERE `db` = 'mydatabase' AND specific_name = 'myprocedure';" 1> myprocedure.sql

有关使用Windows批处理的更完整的示例,请查看我对另一个问题的回答。MySQL - mysqldump --routines to only export 1 stored procedure (by name) and not every routine

票数 1
EN

Stack Overflow用户

发布于 2016-07-01 22:53:36

我创建了一个脚本来输出到一个单独的文件。

https://gist.github.com/temmings/c6599ff6a04738185596

示例:mysqldump ${DATABASE} --routines --no-create-info --no-data --no-create-db --compact | ./seperate.pl

文件输出到目录(out/)。

$ tree . └── out ├── FUNCTION.EXAMPLE_FUNCTION.sql └── PROCEDURE.EXAMPLE_PROCEDURE.sql

票数 4
EN

Stack Overflow用户

发布于 2010-05-06 22:43:26

我认为答案是:没有后处理是不可能的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2721327

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档