Experimento con datos: y ahi viene Maisanta! (segunda parte)

En uno de esos buhoneros especializados en IT del centro de caracas encontramos la DB maisanta; ella viene de un horrible DBF que ha sido llevado a la forma separada por comas (archivo CSV) y para cargarlo simplemente ejecutamos desde consola de mysql el siguiente comando:

>mysql -u root -p

y nos conectamos a la db CNE creada en el acpitulo 1:
mysql>use cne

crear la tabla maisanta:
mysql>CREATE TABLE `maisanta` (
  `cedula` int(10) NOT NULL,
  `nacionalidad` char(1) NOT NULL,
  `nombre` varchar(128) NOT NULL,
  `cod_centro` int(10) NOT NULL,
  `direccion` text,
  `fecha_nac` date default NULL,
  `opositor` tinyint(1) unsigned NOT NULL default ‘0’,
  `telefono` varchar(50) default NULL,
  `abstencion` tinyint(1) unsigned NOT NULL default ‘0’,
  `firma_valida` tinyint(1) unsigned NOT NULL default ‘0’,
  `firma_rechazada` tinyint(1) unsigned NOT NULL default ‘0’,
  `fallecido` tinyint(1) unsigned NOT NULL default ‘0’,
  `mision_patriota` tinyint(1) unsigned NOT NULL default ‘0’,
  `mision_ribas` tinyint(1) unsigned NOT NULL default ‘0’,
  `mision_vuelvan` tinyint(1) unsigned NOT NULL default ‘0’,
  `contra_opo` tinyint(1) unsigned NOT NULL default ‘0’,
  PRIMARY KEY  (`cedula`,`nacionalidad`),
  KEY `idx_cedula` (`cedula`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 PACK_KEYS=1;

y posteriormente cargamos la data:
mysql>LOAD DATA LOCAL INFILE ‘/home/webapp/repdbf.txt’
IGNORE INTO TABLE maisanta FIELDS TERMINATED BY ‘;’
        ENCLOSED BY ‘\”
LINES TERMINATED BY ‘\n’ STARTING BY ”
(cedula, nacionalidad, nombre, cod_centro, direccion, @fecha_tmp, opositor, telefono, abstencion, firma_valida, firma_rechazada, fallecido, mision_patriota, mision_ribas, mision_vuelvan, contra_opo)
SET fecha_nac = DATE_FORMAT(@fecha_tmp, ‘%Y-%m-%d’);

Observen 2 cosas; primero, tarda un buen rato (aprox. unos 10 minutos si tu mysql está bien "tuneado"), lo otro, es que la fecha esta en formato latino (dia/mes/año) y no en formato ansi (año-mes-dia) vean que puedo adicionalmente pre-procesar los campos antes de ser insertados, en este caso, convertir el campo fecha_nacimiento a una forma ANSI.
ahora, probamos que la data ha cargado correctamente:
mysql> select count(cedula) from maisanta;
+—————+
| count(cedula) |
+—————+
|      12394109 |
+—————+

1 row in set (0.00 sec)

Si me faltó algun registro; bueno, cosas de andar convirtiendo desde esa horrible cosa que es JosPro (lease: Visual Publisher para Windows y compañia).

fijense que la tabla tiene una muy buena respuesta:
mysql> select nombre, fecha_nac from maisanta where cedula = 13264658 and nacionalidad = ‘V’;
+———————————+————+
| nombre                          | fecha_nac  |
+———————————+————+
| LARA GIMENEZ JESUS IGNACIO JOSE | 1978-10-23 |
+———————————+————+

1 row in set (0.09 sec)

Lo cual prueba que la indización se ejecutó correctamente, sino; ejecuten el myisamchk en la db:
>myisamchk -f -p /var/lib/mysql/data/cne/*.MYI

y todo listo.

Ahora, pasaremos todo esto a postgreSQL.

Acerca de phenobarbital

http://about.me/phenobarbital

Publicado el 13 mayo 2007 en Linux, PlanetaLinux. Añade a favoritos el enlace permanente. 1 comentario.

Responder

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

A %d blogueros les gusta esto: