Backup de la base de datos en CodeIgniter (incluye CSV)

- Andrés Cruz

In english

Hacer copias de seguridad de la base de datos del proyecto es fundamental para garantizar la integridad y disponibilidad de los datos en caso de pérdida o daño. Cuando se trata de aplicaciones web, la base de datos es el núcleo y  el elemento más importante del sistema , ya que es donde se almacenan y protegen los datos y la información crítica de los usuarios y del proyecto en general. Una pérdida no planificada de datos puede resultar en la pérdida de toda la estructura de datos de la aplicación, lo cual puede ser desastroso tanto para la empresa o usuario final, como para los usuarios del sistema. Por lo tanto, es fundamental realizar copias de seguridad de la base de datos de la aplicación web de forma regular para evitar la pérdida de datos y garantizar la continuidad del negocio . Además, es importante verificar y validar las copias de seguridad para asegurarse de que sean efectivas y evitar sorpresas desagradables en el caso de un fallo del sistema.

En CodeIgniter como framework PHP que es, podemos realizar la mayoría de las operaciones que necesitamos en las aplicaciones webs más comunes; como lo es exportar completamente tu base de datos (o parte de la misma), lo podemos hacer fácilmente y organizadamente en CodeIgniter; para eso nos vamos a apoyar en la documentación oficial para hacer esta tarea.

Database Utility Class.

Lo primero que necesitamos es una clase de utilería que hace el backup por nosotros:

$this->load->dbutil();

Cómo ves, así de simple, tenemos ya una funcionalidad que se encarga de hacer el backup de la base de datos de nuestra aplicación, de la base de datos que nosotros configuramos en el archivo database de la carpeta conf; ahora, hacemos la copia de nuestra base de datos:

$backup = $this->dbutil->backup();

Una vez tengamos el backup, el archivo en bruto como tal no nos sirve de mucho; tenemos que escribirlo en algún lado pasamos a escribir esta data en algo entendible por nosotros, y lo guardamos en un archivo:

$this->load->helper('file');
write_file('/path/to/mybackup.gz', $backup);

Como puedes ver, empleamos el helper file de CodeIgniter, el cual acepta el bloque de datos que generamos anteriormente, y lo escribe en algún archivo en alguna ubicación con alguna extensión.

Ahora empleamos el helper para descargar archivos directamente en nuestro navegador y forzamos la descarga:

$this->load->helper('download');
force_download('mybackup.gz', $backup);

Como puedes ver, tambien existe un helper para tal fin; con este helper, nuestro CodeIgniter da el archivo para la descarga de nuestra base de datos y con esto el proceso terminó.

Hacer el backup de una tabla o query en particular de la base de datos: Exportarlo a un Excel/CSV

También podemos hacer una exportación parcial de la base de datos, de una tabla o de un query en general; para eso tenemos que construir el query y a posterior: por ejemplo, una tabla llamada usuarios:

$this->load->dbutil();
$query = $this->db->query("SELECT * FROM usuarios");
$config = array (
        'root'          => 'root',
        'element'       => 'element',
        'newline'       => "\n",
        'tab'           => "\t"
);
echo $this->dbutil->xml_from_result($query, $config);

Como puedes ver, simplemente necesitamos crear nuestro query cargar la librería para la exportación y luego emplear el método csv_from_result para generar dicho archivo el cual recibe un segundo parámetro que es opcional para indicar el formato de la data.

Andrés Cruz

Desarrollo con Laravel, Django, Flask, CodeIgniter, HTML5, CSS3, MySQL, JavaScript, Vue, Android, iOS, Flutter

Andrés Cruz en Udemy