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 <calali...@gmail.com <mailto:calali...@gmail.com>> escribió:

    2009/1/14 Gabriel Ferro <gabrielrfe...@yahoo.com.ar
    <mailto:gabrielrfe...@yahoo.com.ar>>:
    > ----- Mensaje original ----
    >
    >> De: Gustavo Rosso <gro...@sadaic.org.ar
    <mailto:gro...@sadaic.org.ar>>
    >> Para: Miguel Angel <mvillago...@sayab.com.mx
    <mailto:mvillago...@sayab.com.mx>>; pgsql-es-ayuda@postgresql.org
    <mailto:pgsql-es-ayuda@postgresql.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


--
TIP 2: puedes desuscribirte de todas las listas simultáneamente
   (envía "unregister TuDirecciónDeCorreo" a majord...@postgresql.org)

Responder a