Es de vital importancia tener los catálogos en una base de datos para de esta manera poder hacer las facturas/complementos, y también mantenerlo actualizado

Para ello se ha hecho este script para descargar en una base de datos SQLite

Se reviso y descarga todo lo necesario como por ejemplo códigos postales, clave de unidad, clave de producto / servicio, catálogos de la carta porte 3.0, catálogos de nomina, monedas, usos de CFDI , paises, monedas.

Para crear el archivo de base de datos solo creamos el siguiente archivo

<?php

if(file_exists ( 'sat.db' )){
	
	unlink('sat.db' );
	
}
$sat = new SQLite3('sat.db');

$list = "https://raw.githubusercontent.com/phpcfdi/resources-sat-catalogs/master/database/tables.list";
$schema = "https://raw.githubusercontent.com/phpcfdi/resources-sat-catalogs/master/database/schemas/";
$data = "https://raw.githubusercontent.com/phpcfdi/resources-sat-catalogs/master/database/data/";

$listaText = file_get_contents($list);
$lines = array_filter(array_map('trim',explode("\n", $listaText)));

foreach ($lines as $line) {
    echo "\x1b[33m" . $line . "\x1b[0m \n";

    $schemaText = file_get_contents($schema . $line . ".sql");
    echo $schemaText . "\n";
    $sat->exec($schemaText);

    $dataText = file_get_contents($data . $line . ".sql");
    $dataLines = array_filter(array_map('trim',explode("\n", $dataText)));
    foreach ($dataLines as $dataLine) {
        echo "\x1b[2m" . $dataLine . "\x1b[0m \n";
        $sat->exec($dataLine);
    }

    echo "\x1b[32m data done\n \x1b[0m \n";
}

En nuestro caso dejamos el archivo en d:\catalogosSAT\

En la CMD o Terminal ya posicionado en la carpeta ejecutamos el comando php descargarCatalogos.php para que empiece a crear el archivo .db

php descargarCatalogos.php 

Ya ya se empezara a descargar y a crear el archivo de la base de datos

Una vez creado podemos acceder a el a con el programa dbeaver

Igual podemos usarlo el PHP y Codeigniter, en nuestro caso lo ponemos en la carpeta writable\database