gpt4 book ai didi

php - 在MySQL中复制数据库,如何复制 View ?

转载 作者:可可西里 更新时间:2023-11-01 06:45:16 26 4
gpt4 key购买 nike

尝试使用在 MySQL 服务器上运行 SQL 查询的 PHP 脚本将数据库复制到新数据库中。我到目前为止的代码是:

$dbh->exec("CREATE DATABASE IF NOT EXISTS $new_news CHARACTER SET UTF8;");
$results = $dbh->query("SHOW TABLES FROM $old_news");
$table_list = $results->fetchAll(PDO::FETCH_NUM);

foreach($table_list as $table_row){
foreach($table_row as $table){
$results = $dbh->query("SELECT table_type FROM information_schema.tables where table_schema = '$old_news' and table_name = '$table'");
$table_type = $results->fetch(PDO::FETCH_ASSOC);
$table_type = $table_type['table_type'];
if($table_type == 'BASE TABLE'){
echo "Creating table $table and populating...\n";
$dbh->exec("CREATE TABLE $new_news.$table LIKE $old_news.$table");
$dbh->exec("INSERT INTO $new_news.$table SELECT * FROM $old_news.$table");
}else if($table_type == 'VIEW'){
//echo "Creating view $table...\n";
//$dbh->exec("CREATE VIEW $new_news.$table LIKE $old_news.$table");
echo "$table is a view, which cannot be copied atm\n";
}else{
echo "Skipping $table_type $table, unsupported type\n";
}
}
}

这当前查看 $old_news 中的所有表,在 information_schema 中查找表类型,并根据类型在 $new_news 中创建相同的表。对于表,它会创建相同的表结构,然后“INSERT INTO SELECT”来填充它们。

如何在不使用 mysqldump 整个数据库的情况下复制 View ?

最佳答案

您可以使用 INFORMATION_SCHEMA.VIEWS查看 View 定义,或显示整个语句的 SHOW CREATE VIEW。

关于php - 在MySQL中复制数据库,如何复制 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7013899/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com