[Previo por Fecha] [Siguiente por Fecha] [Previo por Hilo] [Siguiente por Hilo]

[Hilos de Discusión] [Fecha] [Tema] [Autor]

Re: [Ayuda] ODBC para CVS



Iván Caballero Cano dijo [Mon, Oct 31, 2005 at 11:31:03AM -0600]:
> Lo que pasa es que los cambios que debo hacer en mis tablas de MYSQL 
> salen en el diario oficial de la federacion
> y vienen en tablas de documentos de word, esas tablas las proceso de 
> manera que las convierto en un archivo de texto tipo CSV
> con cada campo separado por comas o punto y coma o lo que sea... no hay 
> forma que yo conosca de pasar directamente esos archivos
> o tablas a alguna base de datos que use como dbase o mysql, es por eso 
> que de todos modos tengo que convertir eso a Archivos de texto.
> Y luego ya estando en texto ordenado las puedo convertir en algun 
> formato de BD para interactuar con ellas.. pero eso me toma un poco mas 
> de tiempo.

Haber comenzado por ahí ;-)

Digamos que tienes un depósito de .csv en /tmp/tablas, con los datos
que recibes del DOF, y una base de datos PostgreSQL llamada
'datos'. Claro está, este código no tiene nada de garantía (ni
siquiera lo he corrido una vez, lo escupí directo del cerebro al
correo)... Pero te muestra lo básico. Cada que recibes tus datos del
Diario Oficial, los subes a la BD de verdad (sugiero PostgreSQL, ahora
que si por alguna perversión prefieres MySQL sólo tienes que cambiar
el Pg por mysql).

----------------------------------------------------------------------
#!/usr/bin/perl
use strict;
use warnings;
use DBI;

my ($dbh_csv, $dbh_pg, $sth_trae, $sth_mete);

$dbh_csv = DBI->connect('dbi:csv:f_dir=/tmp/tablas') 
        or die 'No pude abrir los datos en CSV';
$dbh_pg = DBI->connect('dbi:Pg:dbname=datos','user','p4sswd')
	or die 'No pude abrir la conexión a Postgres';

$sth_trae = $dbh_csv->prepare('SELECT campo1, campo2, campo3, campon
    FROM tabla');
$sth_mete = $dbh_pg->prepare('INSERT INTO tabla (campo1, campo2,
    campo3, campon) VALUES (?, ?, ?, ?)');

$sth_trae->execute;
while (my @data = $sth_trae->fetchrow_array) {
    $sth_mete->execute(@data);
}
----------------------------------------------------------------------

Saludos,

-- 
Gunnar Wolf - gwolf en gwolf org - (+52-55)1451-2244 / 5623-0154
PGP key 1024D/8BB527AF 2001-10-23
Fingerprint: 0C79 D2D1 2C4E 9CE4 5973  F800 D80E F35A 8BB5 27AF





[Hilos de Discusión] [Fecha] [Tema] [Autor]