El trigger es el encargado de llenar todas las tablas de las bases de datos con un archivo de texto plano en formato .csv
Lo primero que hacemos es crear la base de datos que es la siguiente:
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
--
-- Base de datos: `bdnarly`
--
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `asesor`
--
CREATE TABLE IF NOT EXISTS `asesor` (
`ase_id` int(11) NOT NULL AUTO_INCREMENT,
`ase_nom` varchar(100) NOT NULL,
`ase_usu` varchar(50) NOT NULL,
`ase_cla` varchar(50) NOT NULL,
`ase_per` int(11) NOT NULL,
PRIMARY KEY (`ase_id`),
KEY `ase_usu` (`ase_usu`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;
--
-- Volcar la base de datos para la tabla `asesor`
--
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `barrio`
--
CREATE TABLE IF NOT EXISTS `barrio` (
`bar_id` int(11) NOT NULL AUTO_INCREMENT,
`bar_idmun` int(11) NOT NULL,
`bar_nom` varchar(250) NOT NULL,
PRIMARY KEY (`bar_id`),
KEY `bar_idmun` (`bar_idmun`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=252 ;
--
-- Volcar la base de datos para la tabla `barrio`
--
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `catastro`
--
CREATE TABLE IF NOT EXISTS `catastro` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`CICLO` double DEFAULT NULL,
`ESTRATO` varchar(255) DEFAULT NULL,
`NIC` varchar(50) DEFAULT NULL,
`NIS` varchar(50) DEFAULT NULL,
`NOMBRE` varchar(255) DEFAULT NULL,
`DIRECCION` varchar(255) DEFAULT NULL,
`MUNICIPIO` varchar(255) DEFAULT NULL,
`BARRIO` varchar(255) DEFAULT NULL,
`CARTERA` double DEFAULT NULL,
`FINANCIADO` double DEFAULT NULL,
`SITUACION` varchar(255) DEFAULT NULL,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=90985 ;
--
-- (Evento) desencadenante `catastro`
--
DROP TRIGGER IF EXISTS `bdnarly`.`actualizarTodasLastablas`;
DELIMITER //
CREATE TRIGGER `bdnarly`.`actualizarTodasLastablas` AFTER INSERT ON `bdnarly`.`catastro`
FOR EACH ROW begin
set @municipio:=(select mun_id from municipio where (mun_nom)=(new.municipio));
set @barrio:='';
if(@municipio is null)then
insert into municipio (mun_nom) values((new.municipio));
set @municipio:=(select mun_id from municipio where (mun_nom)=(new.municipio));
insert into barrio (bar_idmun ,bar_nom ) values ((@municipio),(new.barrio));
set @barrio:=(select bar_id from barrio where (bar_nom)=(new.barrio) limit 1);
else
set @barrio:=(select bar_id from barrio where (bar_nom)=(new.barrio) limit 1);
if(@barrio is null) then
insert into barrio (bar_idmun,bar_nom) values ((@municipio),(new.barrio));
set @barrio:=(select bar_id from barrio where (bar_nom)=(new.barrio) limit 1);
end if;
end if;
set @ciclo:=(select cic_id from ciclo where (cic_id)=(new.ciclo));
if(@ciclo is null) then
insert into ciclo (cic_id, cic_fec) values ((new.ciclo),now());
set @ciclo:=(select cic_id from ciclo where (cic_id)=(new.ciclo));
end if;
set @estrato:=(select est_id from estrato where (est_nom)=(new.estrato));
if(@estrato is null) then
insert into estrato ( est_nom) values ((new.estrato));
set @estrato:=(select est_id from estrato where (est_nom)=(new.estrato));
end if;
set @situacion:=(select sit_id from situacion where (sit_nom)=(new.situacion));
if(@situacion is null) then
insert into situacion ( sit_nom) values ((new.situacion));
set @situacion:=(select sit_id from situacion where (sit_nom)=(new.situacion));
end if;
set @cliente:=(select cli_id from cliente where (cli_nic)=(new.nic)
and (cli_nis)=(new.nis));
if(@cliente is null) then
insert into cliente ( cli_nis, cli_nic, clic_nom, cli_dir, cli_sit, cli_barid, cli_estid)
values ((new.nis),(new.nic),(new.nombre),(new.direccion),(
@situacion),(@barrio),(@estrato));
set @cliente:=(select cli_id from cliente where (cli_nic)=(new.nic)
and (cli_nis)=(new.nis));
end if;
set @clienteciclo:=( SELECT clicic_id FROM clienteciclo
where (clicic_nis)=(new.nis)
and (clicic_nic)=(new.nic)
and (clicic_cic)= (new.ciclo)
);
if @clienteciclo is null then
insert into clienteciclo (clicic_nis, clicic_nic, clicic_cic, clicic_car, clicic_fin, clicic_ase)
values((new.nis),(new.nic),(new.ciclo),(new.cartera),(new.financiado),0);
end if;
end
//
DELIMITER ;
--
-- Volcar la base de datos para la tabla `catastro`
--
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `ciclo`
--
CREATE TABLE IF NOT EXISTS `ciclo` (
`cic_id` int(11) NOT NULL,
`cic_fec` date NOT NULL,
PRIMARY KEY (`cic_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
--
-- (Evento) desencadenante `ciclo`
--
DROP TRIGGER IF EXISTS `bdnarly`.`actualizarRegistro`;
DELIMITER //
CREATE TRIGGER `bdnarly`.`actualizarRegistro` AFTER INSERT ON `bdnarly`.`ciclo`
FOR EACH ROW begin
set @val:=( SELECT cliente.cli_nis FROM cliente where cli_nis=1
);
if(@val is null) then
insert into registro (registro) values('suceso');
end if;
end
//
DELIMITER ;
--
-- Volcar la base de datos para la tabla `ciclo`
--
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `cliente`
--
CREATE TABLE IF NOT EXISTS `cliente` (
`cli_id` int(11) NOT NULL AUTO_INCREMENT,
`cli_nis` varchar(50) NOT NULL COMMENT 'Numero de identificacion del cliente',
`cli_nic` varchar(50) NOT NULL,
`clic_nom` varchar(255) NOT NULL,
`cli_dir` varchar(255) NOT NULL,
`cli_sit` int(11) NOT NULL,
`cli_barid` int(11) NOT NULL,
`cli_estid` int(11) NOT NULL,
PRIMARY KEY (`cli_id`),
UNIQUE KEY `cli_nis` (`cli_nis`,`cli_nic`),
KEY `cli_nic` (`cli_nic`),
KEY `cli_barid` (`cli_barid`),
KEY `cli_estid` (`cli_estid`),
KEY `cli_sit` (`cli_sit`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=90985 ;
--
-- Volcar la base de datos para la tabla `cliente`
--
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `clienteciclo`
--
CREATE TABLE IF NOT EXISTS `clienteciclo` (
`clicic_id` int(11) NOT NULL AUTO_INCREMENT,
`clicic_nis` varchar(50) NOT NULL,
`clicic_nic` varchar(50) NOT NULL,
`clicic_cic` int(11) NOT NULL,
`clicic_car` double NOT NULL COMMENT 'cartera del cliente',
`clicic_fin` double NOT NULL COMMENT 'Financiacion del cliente',
`clicic_ase` int(11) NOT NULL DEFAULT '0',
`clicic_cau` int(11) NOT NULL,
`clicic_fecv` date NOT NULL DEFAULT '1000-01-01',
`clicic_feca` date NOT NULL DEFAULT '1000-02-01',
`clicic_des` varchar(255) NOT NULL,
`clicic_tel` varchar(20) NOT NULL,
`clicic_est` int(1) NOT NULL,
PRIMARY KEY (`clicic_id`),
UNIQUE KEY `clicic_nis_2` (`clicic_nis`,`clicic_nic`,`clicic_cic`),
KEY `clicic_nis` (`clicic_nis`),
KEY `clicic_cic` (`clicic_cic`),
KEY `clicic_nic` (`clicic_nic`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=90985 ;
--
-- Volcar la base de datos para la tabla `clienteciclo`
--
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `estrato`
--
CREATE TABLE IF NOT EXISTS `estrato` (
`est_id` int(11) NOT NULL AUTO_INCREMENT,
`est_nom` varchar(50) NOT NULL,
PRIMARY KEY (`est_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=10 ;
--
-- Volcar la base de datos para la tabla `estrato`
--
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `fecha`
--
CREATE TABLE IF NOT EXISTS `fecha` (
`idfecha` int(11) NOT NULL,
PRIMARY KEY (`idfecha`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
--
-- Volcar la base de datos para la tabla `fecha`
--
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `municipio`
--
CREATE TABLE IF NOT EXISTS `municipio` (
`mun_id` int(11) NOT NULL AUTO_INCREMENT,
`mun_nom` varchar(50) NOT NULL,
PRIMARY KEY (`mun_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
--
-- Volcar la base de datos para la tabla `municipio`
--
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `registro`
--
CREATE TABLE IF NOT EXISTS `registro` (
`registro` varchar(150) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
--
-- Volcar la base de datos para la tabla `registro`
--
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `situacion`
--
CREATE TABLE IF NOT EXISTS `situacion` (
`sit_id` int(11) NOT NULL AUTO_INCREMENT,
`sit_nom` varchar(150) NOT NULL,
PRIMARY KEY (`sit_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ;
--
-- Volcar la base de datos para la tabla `situacion`
--
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `visitascausales`
--
CREATE TABLE IF NOT EXISTS `visitascausales` (
`viscau_id` int(11) NOT NULL AUTO_INCREMENT,
`vis_nom` varchar(255) NOT NULL,
PRIMARY KEY (`viscau_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=13 ;
--
-- Volcar la base de datos para la tabla `visitascausales`
--
--
-- Filtros para las tablas descargadas (dump)
--
--
-- Filtros para la tabla `barrio`
--
ALTER TABLE `barrio`
ADD CONSTRAINT `barrio_ibfk_1` FOREIGN KEY (`bar_idmun`) REFERENCES `municipio` (`mun_id`) ON UPDATE CASCADE;
--
-- Filtros para la tabla `cliente`
--
ALTER TABLE `cliente`
ADD CONSTRAINT `cliente_ibfk_4` FOREIGN KEY (`cli_sit`) REFERENCES `situacion` (`sit_id`) ON UPDATE CASCADE,
ADD CONSTRAINT `cliente_ibfk_5` FOREIGN KEY (`cli_estid`) REFERENCES `estrato` (`est_id`) ON UPDATE CASCADE,
ADD CONSTRAINT `cliente_ibfk_6` FOREIGN KEY (`cli_barid`) REFERENCES `barrio` (`bar_id`) ON UPDATE CASCADE;
--
-- Filtros para la tabla `clienteciclo`
--
ALTER TABLE `clienteciclo`
ADD CONSTRAINT `clienteciclo_ibfk_1` FOREIGN KEY (`clicic_nis`) REFERENCES `cliente` (`cli_nis`),
ADD CONSTRAINT `clienteciclo_ibfk_2` FOREIGN KEY (`clicic_cic`) REFERENCES `ciclo` (`cic_id`),
ADD CONSTRAINT `clienteciclo_ibfk_3` FOREIGN KEY (`clicic_nic`) REFERENCES `cliente` (`cli_nic`);
Segundo Paso
Creamos una consulta la cual es la encargada de subir todos los datos , en cual el Trigger se encargara de repartir los datos por toda la base de datos.
ejecuta el siguiente Script desde la consola de MYSQL o desde phpmyadmin
use bdnarly;
load data local infile'F:/CATASTRO.csv' REPLACE into table catastro fields terminated by ';' enclosed by '"' lines terminated by '\r\n';
El trigger enpezara a llenar todas las tablas.
descarga el archivo bdnarly.sql.zip y el archivo catastro.csv de la siguiente dirección
pestaña archivos de descarga.
No hay comentarios:
Publicar un comentario