Cómo importar un archivo SQL a una base de datos en PHP

Importar un script SQL mediante programación puede ser la mar de útil si necesitamos crear una estructura de base de datos dinámica. Por ejemplo, si hemos desarrollado una app o un plugin el cual se tiene que descargar e instalar online, el hecho de importar un script SQL de manera dinámica puede servirnos para configurar la base de datos de cara a un funcionamiento óptimo de la app o del plugin.

En este tutorial, vamos a importar un archivo SQL a una base de datos utilizando PHP. En este ejemplo, contaremos con un script SQL para crear una tabla de contactos e insertar datos. El código PHP analiza el archivo línea por línea y extrae las instrucciones a ejecutar utilizando la función MySQL de PHP.

Código PHP para importar un script SQL

Utilizaremos este código de 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 las líneas del array en un bucle foreach para construir la consulta omitiendo comentarios y líneas vacías.

La condición comprueba si la línea contiene símbolos utilizados como delimitadores de comentarios como (-, / *, //). Si es así, el bucle se salta el registro actual y continúa con el siguiente. De esta manera, repite lo mismo hasta la declaración 'final de consulta'. Una vez que se encuentra el final, se ejecutará la consulta. Después, la variable query se restablecerá antes de comenzar la próxima iteración

<?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>';
?>

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP