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.
No te olvides de seguir las actualizaciones de la página en tu Facebook.
3 comentarios:
Gracias por publicar este tipo de cosas, está más que interesante.
creo que deberias dejar el link del archivo en mencion asi se nos es mas facil
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'
Publicar un comentario