mysqldump导出函数、存储过程和视图

发布时间:2024年01月01日

mysqldump导出函数、存储过程和视图

导出函数和存储过程

查看函数和存储过程:

select routine_schema,routine_name,routine_type 
from information_schema.routines 
where routine_schema='DBNAME' and 
routine_type in ('FUNCTION','PROCEDURE');

mysqldump导出函数和存储过程(不导出表数据):

mysqldump -h127.0.0.1 -P3306 -uroot --set-gtid-purged=OFF \
--single-transaction --skip-opt \
--routines --no-create-db --no-create-info --no-data \
-B DBNAME > dump_routines_DBNAME_`date +%F`.sql

或者

mysqldump -h127.0.0.1 -P3306 -uroot --set-gtid-purged=OFF \
--single-transaction --skip-opt \
-R -ndt -B DBNAME > dump_routines_DBNAME_`date +%F`.sql

生成删除函数和存储过程的语句:

select 'DROP ' || concat_ws(' ',routine_type,concat_ws('.',routine_schema,routine_name)) || ';'  as SQLTEXT 
from information_schema.routines
where routine_schema='DBNAME' and 
routine_type in ('FUNCTION','PROCEDURE');

修改并确认dump文件后,导入存储过程和函数:

mysql -h127.0.0.1 -P3306 --uroot -e "use DBNAME; source /backup/dump_routines_DBNAME_xxx.sql;"

导出视图定义

检查数据库下面所有视图:

select table_schema,table_name from information_schema.views 
where table_schema='DBNAME';

获取并拼接所有视图名称:

select group_concat(concat_ws('.',table_schema,table_name) separator ',')
from information_schema.views where table_schema='DBNAME'\G

mysqldump单独导出视图/表定义:

mysqldump -h127.0.0.1 -P3306 -uroot --set-gtid-purged=OFF \
--single-transaction --skip-opt \
--no-create-db --no-data \
DBNAME VIEW1 VIEW2 VIEW3 ... > dump_views_DBNAME_`date +%F`.sql

生产删除视图的语句:

select 'DROP VIEW ' || concat_ws('.',table_schema,table_name) || ';' as SQLTEXT
from information_schema.views where table_schema='DBNAME'; 

修改并确认dump文件后导入视图:

mysql -h127.0.0.1 -P3306 --uroot -e "use DBNAME; source /backup/dump_views_DBNAME_xxx.sql;"

🐍:MySQL Shell导入视图定义(尤其是嵌套视图)会出现权限问题,官方不推荐。

文章来源:https://blog.csdn.net/Sebastien23/article/details/135328910
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。