我有mysql转储文件。如何使用php将此文件导入mysql?
答案 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/> "$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
等。