Lista de Departamentos, Provincias y Distritos del Peru

En la página del INEI, se puede descargar el UBIGEO2006, una tabla en DBF, que contiene la lista de los departamentos, provincias y distritos del Perú. Esta actualizada a mayo del 2006, y como es dificil que hayan aparecido nuevos distritos, lo vamos a usar.

Primero lo descargamos de aquí, consiste en un archivo ZIP con un PDF y un DBf en su interior. En el DBF están los datos que necesitamos, es decir los departamentos, provincias y distritos. Eso es bueno, excepto por el hecho que están en una sola lista. La forma de extrae los datos adecuados están en el pdf.

Si son departamentos, los campos CodProv y CodDist son iguales a '00'.
Si son provincias, el campo CodDist es igual a '00' y el campo CodProv es diferente de '00'.
Si son distritos todos los campos son diferentes de '00'.

Necesitamos importarlo a nuestras tablas Departamento, Provincia y Distrito. El tema es separar la paja del arroz, digo los departamentos de las provincias y de los distritos.

select * from ubigeo2006
/*departamentos*/
insert into departamento(IdDepartamento,Nombre,idpais)
select coddpto,nombre,'173' from ubigeo2006 where codprov='00' and coddist='00'
/*provincias*/
insert into provincia(Idprovincia,Nombre,iddepartamento)
select codprov+coddpto,nombre,coddpto from ubigeo2006 where coddist='00' and codprov<>'00'
/*distritos*/
insert into distrito(Iddistrito,Nombre,idprovincia)
select coddist+codprov+coddpto,nombre,codprov+coddpto from ubigeo2006 where coddist<>'00' and codprov<>'00' and coddpto<>'00'


Con las sentencias anteriores se llenan las tablas, he combinado los campos debido a que los codigo de la tabla Ubigeo se repiten en provincias y distritos, asi me aseguro que sean unicos.

3 comentarios:

Efren Cardozo dijo...

Gracias por publicar este tipo de cosas, está más que interesante.

ODIS dijo...

creo que deberias dejar el link del archivo en mencion asi se nos es mas facil

MP3Vida dijo...

Creo que esta mal la consulta....

Esto es lo correcto:

select * from ubigeo2006;


insert into departamento(IdDepartamento,Nombre)
select coddpto,nombre from ubigeo2006 where codprov='00' and coddist='00'



insert into provincia(Idprovincia,Nombre,iddepartamento)
select CONCAT(codprov,'',coddpto),nombre,coddpto from ubigeo2006 where coddist='00' and codprov<>'00'


insert into distrito(Iddistrito,Nombre,idprovincia)
select CONCAT(coddist,'',codprov,'',coddpto),nombre,CONCAT(codprov,'',coddpto) from ubigeo2006 where coddist<>'00' and codprov<>'00' and coddpto<>'00'