Re: Experiencias migrando db SqlServer a postgresql

From: Gabriel Ferro <gabrielrferro(at)yahoo(dot)com(dot)ar>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Experiencias migrando db SqlServer a postgresql
Date: 2009-01-15 14:28:18
Message-ID: 66805.12653.qm@web52106.mail.re2.yahoo.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

----- Mensaje original ----

> De: Gustavo Rosso <grosso(at)sadaic(dot)org(dot)ar>
> Para: Luis Fernando Lopez Aguilar <flopezg333(at)gmail(dot)com>
> CC: Calabaza <calalinux(at)gmail(dot)com>; pgsql-es-ayuda(at)postgresql(dot)org
> Enviado: jueves 15 de enero de 2009, 11:06:09
> Asunto: Re: [pgsql-es-ayuda] Experiencias migrando db SqlServer a postgresql
>
> Esto creo que se puede resolver mediante triggers, invocando una funcion antes
> del insert.
> Gustavo
>
> Luis Fernando Lopez Aguilar escribió:
> > Hola foro
> > Si hacemos comparaciones con el informix antes de insertar a la tabla al campo
> definido como serial se le asigna valor cero y luego se inserta, eso hace que el
> motor tome el siguiente valor, y sin importar si estas haciendo un insert
> despues de un cargado a pulso de la tabla, cuando la tabla es recien creada y
> luego se inserta toma el valor 1 ... pero si se viene de importar valores,
> repito siempre toma el maximo valor mas 1 y ese valor lo almacena en una
> variable que se llama SQLCA.SQLERRD[2] ..... Seria interesante que esta
> caracteristica sea adicionada al motor de postgresql.
> >
> > Saludos cordiales
> > Fernando Lopez
> > Santa Cruz Bolivia
> >
> > El 15 de enero de 2009 7:26, Calabaza
> > escribió:
> >
> > 2009/1/14 Gabriel Ferro
> > >:
> > > ----- Mensaje original ----
> > >
> > >> De: Gustavo Rosso
> > >
> > >> Para: Miguel Angel
> > >; pgsql-es-ayuda(at)postgresql(dot)org
> >
> > >> Enviado: miércoles 14 de enero de 2009, 13:39:31
> > >> Asunto: Re: [pgsql-es-ayuda] Experiencias migrando db SqlServer
> > a postgresql
> > >>
> > >> Yo hice esta experiencia, tratando de automatizar los maximo
> > posible en
> > >> sqlserver importe los datos de cada tabla.
> > >> (Hay una aplicacion dentro del administrador corporativo que
> > >> graficamente te permite hacerlo)
> > >> El delimitador que use es el pipe ( | )
> > >> Luego hice un scrip para que inserte todos los datos en
> > postgres (Antes
> > >> que esto ya tenia armado toda las estructuras de las tablas).
> > >> Ejemplo del scrip:
> > >>
> > >> COPY adesaldo FROM '/home/postgres/datos/adesaldo.dat'
> > DELIMITERS '|'
> > >> WITH NULL AS '';
> > >> COPY ajustes FROM '/home/postgres/datos/ajustes.dat' DELIMITERS
> > '|' WITH
> > >> NULL AS '';
> > >> COPY anexo_lotes FROM '/home/postgres/datos/anexo_lotes.dat'
> > DELIMITERS
> > >> '|' WITH NULL AS '';
> > >> .
> > >> .
> > >> .
> > >> Espero te sriva.
> > >> Gustavo
> > >>
> > >> Miguel Angel escribió:
> > >> > El mar, 13-01-2009 a las 16:22 -0500, Ricardo Mendoza escribió:
> > >> >
> > >> >> Saludos a los miembros de la lista.
> > >> >>
> > >> >> Revisando los post en el archivo de la lista, se toca
> > brevemente el
> > >> >> tema sobre como migrar, desearia conocer experiencias sobre
> > migracion
> > >> >> de bases de datos sqlserver a postgresql,
> > >> >>
> > >> >
> > >> > A modo de comentario te digo que migrarlo es algo sencillo
> > pero tedioso
> > >> > en cuestión de datos; pero para con funciones y disparadores
> > tienes que
> > >> > tratarlos de uno a uno para poder hacer la correcta
> > conversión a el
> > >> > lenguaje de plpgsql.
> > >> >
> > >> >
> > >> >> en especial con referencia a
> > >> >> como manejar la interaccion con aplicaciones remotas de tres
> > capas o
> > >> >> mas
> > >> >>
> > >> >
> > >> > Para con esto he manejado programas a base de struts en java
> > con 7
> > >> > capas, no se si te refieras a esto pero en cuanto a la
> > conexión con
> > >> > postgres solo hay que dar una conexión válida, crear los
> > archivos de
> > >> > lectura y listo.
> > >> >
> > >> >
> > >> >> y los equivalentes de SQL Server Reporting Services,SQL Server
> > >> >> Analysis Services.etc. gracias
> > >> >>
> > >> >
> > >> > Dos buenos equivalentes podrían ser las suites de Jasper
> > Reports o bien
> > >> > la suite de Pentaho, ambos tienen su propio reporteador,
> > ambos pueden
> > >> > conectarse a cualquier base por medio de un JDBC y ambos
> > finalmente
> > >> > tienen su propia herramienta de ETL y cubos (dentro de jasper
> > report
> > >> > este punto ya debería estar puesto que la última vez que
> > entre ya se
> > >> > hablaba de su desarrollo).
> > >> >
> > >> >
> > >
> > > Siempre me pregunte que cuando cargo datos desde archivos planos
> > > que cuidado tendre que tener si en las tablas se usan campos
> > serial..
> > > ¿sera suficiente con asegurarse que estan inicializados
> > correctamente estos campos en la tabla destino antes de importar?
> > > Me explico.. si tengo la tablas factura con clave numfactserial, la
> > > tabla productos con clave numprodserial y la tabla
> > facturadetalle con
> > > los campos integer numfac y numprod
> > > de modo de lograr la relacion n a n, al llevarla a postgres
> > deberia hacer
> > > 1-asegurar que los iniciales de los seriales esten en 0 o 1 o lo
> > que corresponda
> > > 2- importar la tabla productos sin insertar la clave (ya que
> > sera serial)
> > > 3- importar la tabla facturas sin insertar la clave (ya que
> > sera serial)
> > > 4- importar la tabla facturadetella conteniendo los dos campos....
> > >
> > > Calculo que sera asi, de todas maneras en BD mas complejas se puede
> > > complicar mas las cosas asi que no se sino sera mejor importar los
> > > datos desde una funcion que haga los insert.
> >
> > > ¿que dicen?
> > Yo me decanto por la opción 4 ya que si a un campo serial le insertas
> > un dato ya no se ejecuta su secuencia, y luego puedes ver en que
> > numero quedó ese campo en tu tabla y asignas ese numero (más uno si
> > mal no recuerdo) a tu secuencia para que todo quede aceitado para tu
> > software.
> >
> > De esta forma te aseguras que tu BD se encuentra íntegra ya que si
> > borraste algun registro y su id difiere de la cantidad total de
> > registros ya vas a tener problemas al importar datos usando el
> > serial...
> >
> > Un abrazo.
> > --
> > §~^Calabaza^~§ from Villa Elisa, Paraguay
> > --
> > TIP 8: explain analyze es tu amigo
> >
> >
> --

No entiendo cual es el problema, si la tabla destino esta vacia y el
indice inicializado... al leer el primer renglon del archivo lo deberia
insertar con el serial 1 (o 0 si le dimos ese valor inicial)
¿no seria asi?
ahora si me dicen que la tabla destino tiene datos que no quiero
perder.... ahi ya es otra cosa.. creo que en este caso si estamos
obligados a usar funciones insert..

Yahoo! Cocina
Recetas prácticas y comida saludable
http://ar.mujer.yahoo.com/cocina/

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message M C 2009-01-15 15:00:55 Re: Formato de devolución de funciones
Previous Message Gustavo Rosso 2009-01-15 14:06:09 Re: Experiencias migrando db SqlServer a postgresql