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

时间:2010-04-27 12:58:54

标签: mysql stored-procedures scripting mysqldump

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添加到第二个命令,他们也不会获得自己的文件。

4 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

Couldn't find User with id=sign_out 命令不支持将存储过程转储到单个文件中。

但是,可以使用mysqldump命令来完成它。

mysql

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

答案 3 :(得分:-1)

这写表定义(不是SP)fwiw:

mysqldump -u<username> -p<password> -T<destination-directory> --lock-tables=0 <database>

我碰到的一个障碍是,确保你有足够的权限。我刚做了chmod 777。

关于这一点的说明--MySQL将写出.sql文件中的表结构和.txt文件中的数据。我希望它能正常做到,谢谢。