Lenguaje PHP

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
Importar archivo SQL a MySQL con PHP

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

Nestor Tapia

Bloggero, amante de la programación PHP, innovador y me fascina compartir información. Desde que conocí el entorno informatico y el internet me llamó la atención la programación, Por tal motivo he creado mi blog BAULPHP.COM para compartir mis experiencias con todos ustedes. ¡Gracias por leerme!.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba