zoukankan      html  css  js  c++  java
  • mysql导出存储过程、函数、视图、触发器

    由于通过mysqldump导出的存储过程、函数、视图、触发器包含definer信息,导致很多时候无法正常导入。通过以下SQL可以自动生成创建语句。

    --导出存储过程和函数
    SELECT CONCAT("DROP ",TYPE," IF EXISTS `",db,"`.`", NAME,"`; DELIMITER ;; CREATE ",TYPE," `",db,"`.`",NAME,"`(", param_list,") ",IF ( TYPE = "FUNCTION", CONCAT ("RETURNS ", RETURNS, " ")," "), body_utf8,";; DELIMITER ;")  FROM   mysql.proc;

    --导出视图
    SELECT CONCAT("DROP VIEW IF EXISTS `",TABLE_SCHEMA,"`.`",TABLE_NAME,"`; CREATE VIEW `", TABLE_SCHEMA,"`.`",TABLE_NAME,"` as ",VIEW_DEFINITION,";")  FROM   information_schema.VIEWS;

    --导出触发器
    SELECT CONCAT("DROP TRIGGER IF EXISTS `",TRIGGER_SCHEMA, "`.`", TRIGGER_NAME,"`; DELIMITER ;; CREATE TRIGGER `",TRIGGER_SCHEMA,"`.`",TRIGGER_NAME,"` ",ACTION_TIMING," ",EVENT_MANIPULATION," ON `",EVENT_OBJECT_SCHEMA,"`.`",EVENT_OBJECT_TABLE,"` FOR EACH ROW ",ACTION_STATEMENT,";; DELIMITER ;")  FROM information_schema.TRIGGERS;

    --导出事件
    SELECT    CONCAT(     "DROP EVENT IF EXISTS `",     EVENT_SCHEMA,     "`.`",     EVENT_NAME,     "`; DELIMITER ;; CREATE EVENT `",     EVENT_SCHEMA,     "`.`",     EVENT_NAME,     "` ON SCHEDULE EVERY ",     INTERVAL_VALUE,     " ",     INTERVAL_FIELD,     " STARTS '",     STARTS,"'",     IF ( ENDS <>NULL, CONCAT (" ENDS '",ENDS,"'"),""),         " ON COMPLETION ",     ON_COMPLETION,     " ENABLE DO ",     EVENT_DEFINITION,     ";; DELIMITER ;"   )  FROM   information_schema.events; 

    或者(针对版本mysql.5.6.14)
    mysqldump -h127.0.0.1 -uroot  -proot@123 -P5320 -B -R -E --triggers --default-character-set=utf8 --opt --max-allowed-packet=64M --net_buffer_length=163840  --single-transaction  ad |sed '/DEFINER.*SQL SECURITY DEFINER/d;s/^CREATE DEFINER.*PROCEDURE /CREATE PROCEDURE /;s/^CREATE DEFINER.*FUNCTION /CREATE FUNCTION /;s/^.*CREATE.*DEFINER.*trigger /CREATE /*!50003 trigger /;s/^.*CREATE.*DEFINER.*EVENT /CREATE /*!50106 EVENT /;' > ad.sql

    版权声明:QQ:597507041

  • 相关阅读:
    C# 多线程详解 Part.02(UI 线程和子线程的互动、ProgressBar 的异步调用)
    ubuntu 18.04安装ftp服务器
    ubuntu 18.04设置开机自动挂载移动硬盘
    使用apache commons net进行ftp传输
    Navicat连接MySQL 8出现2059
    Eclipse配置tomcat
    MySQL从.ibd文件中恢复数据
    MySQL建表时添加备注以及查看某一张表的备注信息
    在node.js中使用Set
    Java测试当前应用所占用的内存示例
  • 原文地址:https://www.cnblogs.com/spzhangfei/p/4801750.html
Copyright © 2011-2022 走看看