• Publicidad

Cómo insertar datos en tabla PostgreSQL con Perl

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Cómo insertar datos en tabla PostgreSQL con Perl

Notapor rookie23 » 2006-01-18 19:41 @862

Saludos a todos en el foro.

He realizado una consulta a una tabla en mi servidor MySQL (con SELECT) de manera exitosa, pero desde ayer he estado intentando insertar el resultado de esa consulta a otra tabla que se encuentra en mi servidor PostgreSQL, todo desde Perl.

Ambas tablas tienen definidos los mismos atributos y se llaman igual. Las conexiones a ambas bases de datos son correctas, ya que al ejecutar una consulta desde Perl a ambas, el resultado lo imprimo en pantalla de manera satisfactoria.

¿Cómo sería la mejor manera de insertar el resultado de dicha consulta a la tabla de PostgreSQL??? ¿Con algún arreglo o sería mejor guardar el resultado en un archivo .txt?

¿Algún consejo? ¿O algún enlace con documentación al respecto?

Gracias por su apoyo y ayuda.
rookie23
Perlero nuevo
Perlero nuevo
 
Mensajes: 11
Registrado: 2006-01-12 12:46 @573

Publicidad

Notapor monoswim » 2006-01-18 19:51 @869

Yo lo haría backapeando la base de datos, o sea, crear un archivo que tenga el formato SQL que te permita crear la base de datos en la nueva tabla (tal vez modificando algún contenido).

O sea, que en el backup tendrías

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
create table...
insert...
insert...
insert...

create table2
insert2...
insert2...
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


Así lo hice siempre entre las MySQL... Pienso que si el SQL es estándar no deberías de tener problema...

Saludos
MonoSwim
Perl Programming Language
Avatar de Usuario
monoswim
Perlero nuevo
Perlero nuevo
 
Mensajes: 452
Registrado: 2003-11-18 16:13 @717
Ubicación: Buenos Aires

Re: Como insertar datos en tabla Postgres con Perl??

Notapor Perl user » 2006-01-18 21:40 @944

rookie23 escribiste:He realizado una consulta a una tabla en mi servidor MySQL (con SELECT) de manera exitosa, pero desde ayer he estado intentando insertar el resultado de esa consulta a otra tabla que se encuentra en mi servidor PostgreSQL, todo desde Perl.


Tal como lo planteas es válido:
  1. Abres un gestor de acceso a la base de datos, para cada base de datos
  2. Creas un gestor de sentencias para la petición de inserción en cada una de las tablas que requieres
  3. Insertas los datos
  4. Cierras la conexión de los gestores
monoswim escribiste:Yo lo haría backapeando la base de datos, o sea crear un archivo que tenga el formato SQL que te permita crear la base de datos en la nueva tabla (tal vez modificando algún contenido)

Definitivamente nada práctico e ineficiente. Tienes que regenerar el esquema e insertar los datos cada vez que quieres actualizar o que haces el insert, eso ni como réplica correcta funciona a menos que sea MUY esporádico.

Saludos,
Marco A. Manzo
[email protected]
http://www.unixmonkeys.com/amnesiac/
Perl Programming Language
Perl user
Maestro honorario
Maestro honorario
 
Mensajes: 271
Registrado: 2004-11-03 21:11 @924

Notapor monoswim » 2006-01-19 08:38 @401

Pues la idea no era actualizar, pensaba que era para mudar la base de datos una sola vez y ya... No entendí bien que quería :oops:

Saludos
MonoSwim
Perl Programming Language
Avatar de Usuario
monoswim
Perlero nuevo
Perlero nuevo
 
Mensajes: 452
Registrado: 2003-11-18 16:13 @717
Ubicación: Buenos Aires

Notapor rookie23 » 2006-01-20 14:05 @628

Saludos a todos.

Muchas gracias por sus respuestas, créanme que son de gran ayuda, bien dicen que dos cabezas piensan mejor que una.

Bueno, respecto a la inserción de los datos obtenidos de la tabla de MySQL al servidor PostgreSQL, hice lo siguiente:
  1. Conecto a ambos servidores (MySQL y PostgreSQL con dos gestores de acceso)
  2. Preparo la consulta a mi tabla de MySQL (prepare)
  3. Ejecuto la consulta (execute)
  4. Dentro de un bucle, devuelvo un registro a la vez del resultado de la consulta y lo guardo en un arreglo, con la función fetch_arrow(), cada elemento del arreglo contiene un campo de la consulta y todo el arreglo a una tupla solamente
  5. En un bucle adicional, inserto cada campo contenido en el arreglo a la tabla de PostgreSQL
Es poco elegante el algoritmo, pero funciona, los registros de la tabla que se encuentra en la BD MySQL, se insertan en la tabla de mi servidor PostgreSQL.

Ahora me enfrento a un problema nuevo: ¿Cómo agregar registros adicionales a partir del último registro que fue insertado con anterioridad, vaya, sin correr el riesgo de sobreescribir las tuplas copiadas.

Gracias de antemano por su ayuda. Saludos.
rookie23
Perlero nuevo
Perlero nuevo
 
Mensajes: 11
Registrado: 2006-01-12 12:46 @573


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 16 invitados