2011-12-15 22 views
10

Tôi cần bỏ qua tất cả chế độ xem trong cơ sở dữ liệu của mình và thực hiện sao lưu bằng mysqldump. Hiện tại tôi đang sử dụng tùy chọn bên dưới.Bỏ qua 'số lần xem' trong bản sao lưu mysql db bằng mysqldump

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

Có cách nào để thực hiện sao lưu bỏ qua tất cả các chế độ xem mà không chỉ định tất cả tên 'chế độ xem'.

Trả lời

5

Hãy thử truy vấn này:

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'); 
+1

Tôi đoán tính năng này hoạt động. Sau đó, bạn concat tất cả các tập tin và bây giờ bạn có một bãi chứa duy nhất. –

5

Cách sử dụng

php mysqldump.php mydatabase myusername mypassword > myoutputfile.sql 

Đây là một kịch bản khá cũ của tôi. Ai đó có thể dễ dàng điều chỉnh điều này để sử dụng PDO nếu bạn không có quyền truy cập vào các hàm mysql.

<?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)); 

?> 
2

Nếu người dùng MySQL bạn đang sử dụng không có quyền truy cập vào đọc xem, sau đó chỉ cần đặt một lá cờ -f trên lệnh mysqldump sẽ bỏ qua chúng. Thật không may, nó in một cảnh báo mà có thể gây phiền nhiễu, nhưng nó nếu không sẽ hoàn thành bãi chứa.

+0

Thật là một ý tưởng hay! Nó hoạt động tốt cho tôi! Đây là cách thuận tiện nhất để thực hiện việc này. – zhekaus

Các vấn đề liên quan