Я использую этот бит Java-кода для импорта sql-запросов, он в основном разбивает файл на строки с использованием определенного регулярного выражения и удаляет префиксы комментариев, созданные mysqldump.
портирование этого на PHP должно быть довольно простым.
public static void importSQL(Connection conn, InputStream in) throws SQLException
{
Scanner s = new Scanner(in);
s.useDelimiter("(;\\s*(\r)?\n)|(--\n)");
Statement st = null;
int lineNum = 0;
try
{
st = conn.createStatement();
while (s.hasNext())
{
String line = s.next();
if (line.startsWith("/*!") && line.endsWith("*/"))
{
int i = line.indexOf(' ');
line = line.substring(i + 1, line.length() - " */".length());
}
if (line.trim().length() > 0)
{
try
{
st.execute(line);
}
catch (SQLException e)
{
logger.error("Error executing line #" + lineNum + " : " + line , e);
throw e;
}
}
lineNum++;
}
}
finally
{
if (st != null) st.close();
}
}
альтернативой является вызов командной строки mysql через систему.
что-то вроде:
<?php
system("mysql -u $user -p$password $dbname < $filename");
?>
но это не очень хорошая идея для производственного кода по разным причинам (производительность, последствия для безопасности, о которых вы должны знать, и т. Д.).