Base de datos de Estados, Municipios y Localidades de México

Cuando requerimos incluir en nuestras aplicaciones información referente al Estado, Municipio y la Localidad en la información personal,  sino disponemos de esta información como lo llegamos a encontrar en sitios de Internet y otras aplicaciones usadas en establecimientos.

En esta situación, lo primero es buscar en la red si la bd ya está disponible, que efectivamente, lo está 😉

mpsql

Sin embargo, podemos construir nuestra estructura de tablas y campos a partir del catálogo ofrecido por SEPOMEX en http://www.correosdemexico.gob.mx/lservicios/servicios/CodigoPostal_Exportar.aspx

En SQL Server, empleamos BULK INSERT para importar el contenido de un archivo CSV.

Procedimiento

  1. Descargar el archivo de texto del sitiode SEPOMEX
    1. Revisar la estructura y descripción de campos contenidos en el archivo: http://www.correosdemexico.gob.mx/lservicios/servicios/imagenes/Descrip.pdf
  2. Cambiar la codificación del archivo CSV a formato Unicode
  3. Revisar información y sintaxis de Bulk Insert en SQL Server
  4. Volcar el archivo de texto a una tabla de asentamientos en SQL Server
  5. Extraer los datos de los asentamientos para crear los catálogos de Estados, Municipios y Localidades
  6. Usar la información en nuestras aplicaciones

Script en T-SQL

Crear la BD, la tabla general y las tablas Estado, Municipio y Localidad

create database Municipios;
use Municipios;

create table Asentamientos(
d_codigo int,
d_asenta varchar(255),
d_tipo_asenta varchar(120),
D_mnpio varchar(255),
d_estado varchar(120),
d_ciudad varchar(255),
d_CP int,
c_estado int,
c_oficina int,
c_CP varchar(16),
c_tipo_asenta int,
c_mnpio int,
id_asenta_cpcons int,
d_zona varchar(120),
c_cve_ciudad int)

create table Estado (
 Id int identity(1,1) primary key,
 Nombre varchar(80) not null
 )

create table Municipio (
 Id int identity(1,1) primary key,
 Numero_Mpio int not null,
 Estado_Id int not null,
 Nombre varchar(120) not null

 CONSTRAINT FK_Municipio_Estado 
 FOREIGN KEY (Estado_Id) 
 REFERENCES Estado(Id) 
 ON DELETE CASCADE 
 ON UPDATE CASCADE 
 )

create table Localidad (
 Id int identity(1,1) primary key,
 Municipio_Id int not null,
 Nombre varchar(120) not null,
 CP int,
 Zona varchar(32) not null

 CONSTRAINT FK_Localidad_Municipio 
 FOREIGN KEY (Municipio_Id) 
 REFERENCES Municipio(Id) 
 ON DELETE CASCADE 
 ON UPDATE CASCADE 
 )

 

Volcar el archivo a la tabla Asentamientos.

BULK
INSERT Asentamientos
FROM 'D:\Descargas\CPdescargatxt\CPdescarga.txt' --ruta del archivo de texto a importar
WITH
(
FIRSTROW = 3,
FIELDTERMINATOR = '|',
ROWTERMINATOR = '\n'
)

Extraer los estados, municipios y localidades

Insert into Estado(Nombre)
 select distinct d_estado from Asentamientos order by d_estado


Insert into Municipio(Nombre, Estado_Id, Numero_Mpio)
 SELECT distinct(D_mnpio), c_estado, c_mnpio from Asentamientos


Insert into Localidad(Municipio_Id, Nombre, CP, Zona)
 SELECT M.Id, A.d_asenta, A.d_codigo, A.d_zona from Asentamientos A
 inner join Municipio M on A.c_mnpio = M.Numero_Mpio and A.D_mnpio = M.Nombre
 order by M.Id, A.d_asenta


La base de datos está lista

mpsql2

 

 

 

 

😉

 

 

Anuncios

Escribe tu comentario:

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s