使用触发器和过程导出MySQL数据库?

问题描述 投票:0回答:5

如何创建 MySQL 数据库转储(

.sql
文件)及其所有触发器和过程?

mysql database triggers procedure dump
5个回答
168
投票

mysqldump
将按默认备份所有触发器,但存储过程/函数。有 2 个 mysqldump 参数控制此行为:

  • --routines
    – 默认为 FALSE
  • --triggers
    – 默认为 TRUE

所以在

mysqldump
命令中,添加
--routines
,例如:

mysqldump <other mysqldump options> --routines > outputfile.sql

请参阅有关 mysqldump 参数的 MySQL 文档


26
投票

对于 MYSQL 的专家用户来说这可能是显而易见的,但我在尝试找出默认值不会导出函数时浪费了一些时间。所以我想在这里提到 --routines 参数需要设置为 true 才能使其工作。

mysqldump --routines=true -u <user> my_database > my_database.sql

9
投票

我创建了以下脚本,它对我来说效果很好。

#! /bin/sh
cd $(dirname $0)
DB=$1
DBUSER=$2
DBPASSWD=$3
FILE=$DB-$(date +%F).sql
mysqldump --routines "--user=${DBUSER}"  --password=$DBPASSWD $DB > $PWD/$FILE
gzip $FILE
echo Created $PWD/$FILE*

然后使用命令行参数调用脚本。

backupdb.sh my_db dev_user dev_password

1
投票

我们可以使用 -R 而不是使用 --routine 标志。

mysqldump -u mysqluser -R databasename > /tmp/databasename.sql

0
投票

例如,您可以使用其

例程(过程和函数)
-R--例程)和触发器--触发器)导出apple数据库表的架构和数据 默认情况下隐式使用)到
backup.sql
,如下所示。 *不可能只导出过程或函数,--skip-triggers可以排除默认包含在隐式
--triggers
中的触发器,我的答案解释了如何完美导出数据库:

mysqldump -u john -p -R apple > backup.sql

或者:

mysqldump -u john -p --routines apple > backup.sql

或者。 *您可以明确使用

--triggers
,如下所示:

                        ↓↓ Here ↓↓
mysqldump -u john -p -R --triggers apple > backup.sql
© www.soinside.com 2019 - 2024. All rights reserved.