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
添加到第二个命令,他们也不会获得自己的文件。
答案 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文件中的数据。我希望它能正常做到,谢谢。