mysqldump选项--tab=path将每个表的创建脚本写在单独的文件中。但是我找不到存储过程,除了在屏幕转储中。
我还需要将存储过程放在单独的文件中。
我目前正在研究的解决方案是以编程方式拆分屏幕转储。有没有更简单的方法?
到目前为止,我使用的代码是:
#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添加到第二个命令中,它们也不会获得自己的文件。
发布于 2015-06-11 05:57:50
mysqldump命令不支持将存储过程转储到单个文件中。
但是,可以使用mysql命令完成此操作。
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
发布于 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
发布于 2010-05-06 22:43:26
我认为答案是:没有后处理是不可能的。
https://stackoverflow.com/questions/2721327
复制相似问题