MySQLdump导出存储过程时,会有注释的。但是在用mysql命令导入时,如果不加说明,注释会自动过滤掉。为了连同注释一起导入进去,可以添加--comment参数。
例子:
导出存储过程:
if %time:~0,2% lss 10 (
set ymd=%date:~0,4%-%date:~5,2%-%date:~8,2%_0%time:~1,1%
)else (
set ymd=%date:~0,4%-%date:~5,2%-%date:~8,2%_%time:~0,2%
)
set date=%date:~0,4%-%date:~5,2%-%date:~8,2%
set v_backup_file_name=xedk_%ymd%_bak.sql
set v_backup_error_name=xedk_%ymd%_error.txt
mysqldump -uroot -h292.168.2.154 -P 3308 -p"root" --log-error=D:\DBStruct_%v_backup_error_name% -ntd -R --skip-triggers -f test >"D:\DBStruct_%v_backup_file_name%"
参数说明:
--log-error 将导出过程中的错误日志记录在此参数指示的路径中
-n 即--no-create-db,只导出数据,而不添加CREATE DATABASE 语句
-t 即--no-create-info,只导出数据,而不添加CREATE TABLE 语句
-d 即--no-data,不导出任何数据,只导出数据库表结构
-R 即--routines,导出存储过程和自定义函数
--skip-triggers 导出时屏蔽触发器
-f 强制导出,就算中间有错误也不中断,跳过错误继续导。
test 这里是我的测试库名
总结:该命令就是将test库中的函数单独导出,而不导出表结构以及相关数据已经触发器等。
(备注:
mysqldump -uroot -p"root" -ntd -R --skip-triggers -f test >"D:\DBStruct_test1.sql"
只导出了存储过程
mysqldump -uroot -p"root" -td -R --skip-triggers -f test >"D:\DBStruct_test2.sql"
只导出了存储过程,导出结果和上面没什么区别
mysqldump -uroot -p"root" -d -R --skip-triggers -f test >"D:\DBStruct_test3.sql"
只导出表结构和存储过程
mysqldump -uroot -p"root" -R --skip-triggers -f test >"D:\DBStruct_test4.sql"
虽然条件写的是只导出存储过程,但是还是会把表结构和表数据一起导出。
mysqldump -uroot -p"root" --single-transaction -B test --tables test_parm >"D:\DBData_test.sql"
导出test库中的表test_parm的表结构以及表数据,-B指示哪个数据库,--tables指示哪张表。
)
导入:
mysql -uroot -p"root" -P 3308--comment test < “D:\DBStruct_xedk_2016-10-11_02_bak.sql” 2> "D:\XEDKDBbak\errorDBSturct.txt"
将导出的文件导入到test库中,并且将导入过程中报的错记录在文件D:\XEDKDBbak\errorDBSturct.txt中。
本文名称:mysqldump导入存储过程和其注释
分享网址:
http://kswjz.com/article/gjoscs.html