Importar archivo SQL a MySQL con PHP
Importar archivo SQL a MySQL con PHP. Ejecutar un script SQL mediante PHP puede ser muy útil si deseamos crear, poblar y/o actualizar una base de datos de manera dinámica.
Por ejemplo, si hemos desarrollado u sistema web, app o un plugin el cual se tiene que descargar e instalar online creando y actualizando sus tablas de manera dinámica, esta particularidad hace que nuestro script sea óptimo y fácil de usar hacia el usuario final.
Importar archivo SQL a MySQL con PHP
- Utilizaremos varios ejemplos de código en PHP para importar archivos SQL a una base de datos. Para ello extraeremos el contenido del archivo en un array compuesto de líneas mediante la función de PHP file().
- Recorreremos todas las líneas del array en un bucle foreach para armar la consulta omitiendo comentarios y líneas vacías.
- Ejecutamos e importamos las consultas SQL del archivo
Código PHP para importar un script SQL
Si necesita crear bases de datos dinámicamente desde PHP. Vamos a ver varios ejemplos para interactuar con MySQL. Usaremos de tipo mysqli_query línea por línea o PDO.
¿Cómo cargo un archivo SQL desde PHP (como lo hace phpMyAdmin con su comando de importación)?
Es muy fácil y sencillo, a continuación, veremos 3 ejemplos completos.
Ejecutar archivo .sql desde php
Para cargar un fichero SQL a MySQL podemos usar las siguientes líneas de código PHP
$sql = file_get_contents('database.sql');
$mysqli = new mysqli("localhost", "root", "pass", "testdb");
/* ejecutar multiples query */
$mysqli->multi_query($sql);
Usando MySQLi con Foreach
Aquí tenemos otro ejemplo basado en MySQLi usando el ciclo FOREACH de PHP
<?php
$conn =new mysqli('localhost', 'root', '' , 'blog_samples');
$query = '';
$sqlScript = file('database-script.sql');
foreach ($sqlScript as $line) {
$startWith = substr(trim($line), 0 ,2);
$endWith = substr(trim($line), -1 ,1);
if (empty($line) || $startWith == '--' || $startWith == '/*' || $startWith == '//') {
continue;
}
$query = $query . $line;
if ($endWith == ';') {
mysqli_query($conn,$query) or die('<div class="error-response sql-import-response">Problem in executing the SQL query <b>' . $query. '</b></div>');
$query= '';
}
}
echo '<div class="success-response sql-import-response">SQL file imported successfully</div>';
?>
Ciclo WHILE podemos importar ficheros SQL
Si sos fanático del ciclo WHILE este ejemplo sera genial para poder importar hacia MySQL.
// Recuperamos el fichero como un string
$fileSQL = file_get_contents('ruta_fichero.sql');
/* Ejecutar consulta multiquery */
if ($mysqli->multi_query($fileSQL)) {
do {
/* Almacenar primer juego de resultados */
if ($result = $mysqli->store_result()) {
while ($row = $result->fetch_assoc()) {
print_r($row);
echo "<br/>";
}
$result->free();
}
/* mostrar divisor */
if ($mysqli->more_results()) {
printf("-----------------\n");
}
// Avanzar al siguiente resultado
} while ($mysqli->next_result());
}
/* cerrar conexión */
$mysqli->close();
Ejecutar archivo SQL con PHP PDO
Si estas acostumbrado a trabajar con PDO esta sera la mejor alternativa, y se requiere los siguientes pasos:
- Crear un fichero PHP
- Realizar la conexión MySQL con PHP PDO
- Usar la función
file_get_contents
de PHP - Ejecutar la instrucción con
$db->exec($sql)
<?php
// parametros de conexion
$username = 'root';
$password = 'root';
// Declaramos la base de datos a poblar
$db_name = 'my_database';
$db = new PDO('mysql:host=localhost;dbname='.$db_name.'', $username, $password);
// Agregamos el fichero SQL
$sql = file_get_contents('db_tienda.sql');
// Ejecutamos la instruccion
$qr = $db->exec($sql);
?>