简体   繁体   English

使用mysqldump忽略mysql db backup中的'views'

[英]Ignore 'views' in mysql db backup using mysqldump

I need to ignore all view in my database and take backup using mysqldump. 我需要忽略数据库中的所有视图并使用mysqldump进行备份。 Currently i am using below option. 目前我正在使用以下选项。

--ignore-table=view1 --ignore-table=view2 --ignore-table=view3

Is there any way to take backup omitting all views without specifying all 'view' names.? 有没有办法在不指定所有“视图”名称的情况下省略所有视图的备份。

If the MySQL user you're using doesn't have access to read Views, then just putting an -f flag on the mysqldump command will skip them. 如果您正在使用的MySQL用户无权读取视图,那么只需在mysqldump命令上放置-f标志就会跳过它们。 Unfortunately, it prints a warning which might be annoying, but it will otherwise complete the dump. 不幸的是,它会打印一个可能令人讨厌的警告,否则它将完成转储。

Try this query: 试试这个查询:

SELECT CONCAT('mysqldump -u username -ppassword -h host [some options here] `',`TABLE_SCHEMA`,'` `',
`TABLE_NAME`,'` > ',`TABLE_NAME`,'.sql') AS `sql` 
FROM `INFORMATION_SCHEMA`.`TABLES` 
WHERE `TABLE_TYPE` != 'VIEW'
AND `TABLE_SCHEMA` NOT IN ('INFORMATION_SCHEMA', 'PERFORMANCE_SCHEMA','mysql');

Usage 用法

php mysqldump.php mydatabase myusername mypassword > myoutputfile.sql

This is a pretty old script of mine. 这是我的一个非常古老的剧本。 Someone could easily adapt this to use PDO if you do not have access to the mysql functions. 如果您无法访问mysql函数,则有人可以轻松地将其调整为使用PDO。

<?php

if (is_array($argv) && count($argv)>3) {
    $database=$argv[1];
    $user=$argv[2];
    $password=$argv[3];
}
else {
    echo "Usage php mysqdump.php <database> <user> <password>\n";
    exit;
}

$link = mysql_connect('localhost', $user, $password);


if (!$link) {
    die('Could not connect: ' . mysql_error());
}

$source = mysql_select_db('$database', $link);
$sql = "SHOW FULL TABLES IN `$database` WHERE TABLE_TYPE LIKE 'VIEW';";
$result = mysql_query($sql);
$views=array();
while ($row = mysql_fetch_row($result)) {
   $views[]="--ignore-table={$database}.".$row[0];
}
    //no views or triggers please
system("mysqldump -u root --password=\"$password\" $database --skip-triggers ".implode(" ",$views));

?>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM