使用php导入mysql转储

时间:2011-03-26 22:33:55

标签: php mysql

我有mysql转储文件。如何使用php将此文件导入mysql?

4 个答案:

答案 0 :(得分:3)

取决于转储文件有多大,真的。可以使用sql命令添加一个小的。可以使用脚本导入较大的文件。

快速搜索将显示许多预先制作的脚本,这些脚本将转储分解为更小的块,以便不会使服务器过载。我过去曾使用过这个:http://www.ozerov.de/bigdump.php

答案 1 :(得分:2)

您转储可能是一个只包含大量SQL查询的文件。

导入此类转储的最简单方法是使用mysql command-line client (特别是如果文件很大!)

mysql --user=USERNAME --password=PASSWORD --host=HOST DB_NAME < /path/to/your/file.sql


如果您可以使用某些命令行访问(通常使用ssh)连接到您的服务器,那就可以了。

否则,我想你可以用system()

执行这样的命令

答案 2 :(得分:2)

我想使用PHP,您可以轻松使用file()函数,该函数逐行将文件读入数组。

你可以尝试类似的东西:

mysql_connect(BD_HOST, DB_USER, BD_PASS) or die("Error connecting to MySQL server: ".mysql_error());
mysql_select_db(DB_NAME);

$all_lines = file("mysql_dump.sql", FILE_SKIP_EMPTY_LINES | FILE_IGNORE_NEW_LINES);

foreach($all_lines as $query) {
    if(substr($query, 0, 2) == "--") {
        continue;
    }

    mysql_query($query) or die("Error executing query <br/>&nbsp;&nbsp;"$query\"<br/>".mysql_error());
}

答案 3 :(得分:0)

您可以使用multi_query来导入中等文件大小的数据库转储文件

$command = file_get_contents($dumpfile);
$conn->multi_query($command);
while (mysqli_next_result($conn)); // Flush out the results.

注意: 确切的文件大小限制将取决于您的服务器配置,例如。 max_allowed_packet等。