且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

PHP/MySQL:将表和数据从一个数据库复制到另一个数据库

更新时间:2021-12-26 22:09:45

将其导出到.sql文件并导入到新数据库.

Export it to a .sql file and import to the new database.

在phpMyAdmin中,单击要导出的数据库,单击导出,选中另存为文件,然后单击 go .

In phpMyAdmin click the database you want to export, click export, check save as file, then go.

然后将其上传到要在其中复制数据的新数据库.

Then upload it to the new database that you want to duplicate the data in.

从严格的PHP角度讲,我可以想到的唯一方法是使用SHOW TABLESdescribe {$table}返回记录的所有字段名称和结构,解析出来,创建您的create table语句,然后遍历每个表并创建insert语句.

In a strict PHP sense, the only way I could think to do it would to be use of SHOW TABLES and describe {$table} to return the all the field names and structures of the records, parse that out, create your create table statements, then loop through each table and create insert statements.

恐怕我能为您做的***的就是一种 prototype 代码,我想这将是难以置信的服务器密集型代码,这就是为什么我建议您选择替代路线.

I'm afraid the best I can do for you is a sort of prototype code that I would imagine would be incredibly server intensive, which is why I recommend you go an alternate route.

类似的东西:

<?php

    // connect to first DB

    $tables = mysql_query("SHOW TABLES") or die(mysql_error());
    while ($row = mysql_fetch_assoc($tables)) {
        foreach($row as $value) {
            $aTables[] = $value;
        }
    }
    $i = 0;
    foreach ($aTables as $table) {
        $desc = mysql_query("describe " . $table);
        while ($row = mysql_fetch_assoc($desc)) {
            $aFields[$i][] = array($row["Field"],$row["Type"],$row["Null"],$row["Key"],$row["Default"],$row["Extra"]);
        }
        $i++;
    }

    // connect to second DB

    for ($i = 0; $i < count($aTables); $i++) {

        // Loop through tables, fields, and rows for create table/insert statements

        $query = 'CREATE TABLE IF NOT EXISTS {$aTables[$i]} (
                //loop through fields {

                    {$aFields[$i][$j][0]} {$aFields[$i][$j][1]} {$aFields[$i][$j][2]} {$aFields[$i][$j][3]} {$aFields[$i][$j][4]} {$aFields[$i][$j][5]},
                    {$aFields[$i][$j][0]} {$aFields[$i][$j][1]} {$aFields[$i][$j][2]} {$aFields[$i][$j][3]} {$aFields[$i][$j][4]} {$aFields[$i][$j][5]},
                    {$aFields[$i][$j][0]} {$aFields[$i][$j][1]} {$aFields[$i][$j][2]} {$aFields[$i][$j][3]} {$aFields[$i][$j][4]} {$aFields[$i][$j][5]},
                    {$aFields[$i][$j][0]} {$aFields[$i][$j][1]} {$aFields[$i][$j][2]} {$aFields[$i][$j][3]} {$aFields[$i][$j][4]} {$aFields[$i][$j][5]},
                    etc...
                }
            )';

            //loop through data

            $query .= 'INSERT INTO {$aTables[$i]} VALUES';
            $result = mysql_query("SELECT * FROM " . $aTables[$i]);
            while ($row = mysql_fetch_assoc($result)) {
                    $query .= '(';
                foreach ($aFields[$i][0] as $field) {

                    $query .= '"{$row[$field]}",';
                }
                $query .= '),';
            }
        mysql_query($query);
    }

?> 

这是基于此脚本的,它可能很方便参考.

This is based off of this script which may come in handy for reference.

希望这可以帮助您入门,但是我建议您寻找一种非PHP的替代方法.

Hopefully that's something to get you started, but I would suggest you look for a non PHP alternative.