Copiar datos de una base a otra
Publicado por Sebastian (31 intervenciones) el 25/01/2006 19:50:12
Estimados amigos del foro:
Tengo la necesidad de migrar datos de una base de datos a otra cuando hago cambios en la estructura de la base de datos, y tengo el siguiente problema, el proceso se hace bien, se selecciona donde estan los datos para copiar a la nueva base de datos, pero el problema es que solo se me copian los datos en la primer tabla... luego anque el bucle avanza bien, se me van copiando los datos de todas las tablas de origen en la primera de destino. Les pongo aqui el codigo para ver si alguien me puede decir que es lo que hago mal.
Muchas gracias...a todos
lnDBFs = ADIR(laDBF,GETDIR() + '*.DBF') && Traigo las dbf¡s
cPath=GETDIR() && Guardo el path de la base de datos de origen
*- Si existen archivos DBF, lo inserta en un cursor "csrDBFs"
IF lnDBFs > 0 THEN
CREATE CURSOR csrDBFs (cNombre C(60))
FOR i = 1 to lnDBFs
INSERT INTO csrDBFs VALUES (laDBF(i,1))
NEXT
ELSE
MessageBox("No existen archivos DBF para procesar", 16, "No se hallaron archivos .DBF")
RETURN
ENDIF
*------------------------------------------------------------------------------------------*
* Abro la base de datos a actualizar *
SET PATH TO &cPath
OPEN DATABASE data.dbc EXCLUSIVE
* Abro la base de datos con los ultimos datos *
SET PATH TO 'C:\DMT\DATA_LIB'
OPEN DATABASE data.dbc EXCLUSIVE
SELECT csrDBFs && Selecciono el cursor
GO top && Voy al Inicio
DO WHILE !EOF()
WAIT WINDOW '' timeout 0.1
thisform.lblTabla.Visible=.T.
thisform.lblTabla.CAPTION=csrDBFs.cNombre
cTable=ALLTRIM(csrDBFs.cNombre) && Nombre de la tabla actual
cAllPath=(cpath+ctable)
SET PATH TO &cPath
USE (cAllPath) IN 0
SELECT (cpath+ctable)
USE 'C:\DMT\DATA_LIB\'+ctable IN 0
SELECT 'C:\DMT\DATA_LIB\'+ctable
APPEND FROM &ctable
SELECT csrDBFs
SKIP
LOOP
ENDDO
MESSAGEBOX('Trabajo Terminado','Traspaso de Aplicacion',64)
CLOSE DATABASES
CLOSE TABLES
CLOSE ALL
thisform.Release
Tengo la necesidad de migrar datos de una base de datos a otra cuando hago cambios en la estructura de la base de datos, y tengo el siguiente problema, el proceso se hace bien, se selecciona donde estan los datos para copiar a la nueva base de datos, pero el problema es que solo se me copian los datos en la primer tabla... luego anque el bucle avanza bien, se me van copiando los datos de todas las tablas de origen en la primera de destino. Les pongo aqui el codigo para ver si alguien me puede decir que es lo que hago mal.
Muchas gracias...a todos
lnDBFs = ADIR(laDBF,GETDIR() + '*.DBF') && Traigo las dbf¡s
cPath=GETDIR() && Guardo el path de la base de datos de origen
*- Si existen archivos DBF, lo inserta en un cursor "csrDBFs"
IF lnDBFs > 0 THEN
CREATE CURSOR csrDBFs (cNombre C(60))
FOR i = 1 to lnDBFs
INSERT INTO csrDBFs VALUES (laDBF(i,1))
NEXT
ELSE
MessageBox("No existen archivos DBF para procesar", 16, "No se hallaron archivos .DBF")
RETURN
ENDIF
*------------------------------------------------------------------------------------------*
* Abro la base de datos a actualizar *
SET PATH TO &cPath
OPEN DATABASE data.dbc EXCLUSIVE
* Abro la base de datos con los ultimos datos *
SET PATH TO 'C:\DMT\DATA_LIB'
OPEN DATABASE data.dbc EXCLUSIVE
SELECT csrDBFs && Selecciono el cursor
GO top && Voy al Inicio
DO WHILE !EOF()
WAIT WINDOW '' timeout 0.1
thisform.lblTabla.Visible=.T.
thisform.lblTabla.CAPTION=csrDBFs.cNombre
cTable=ALLTRIM(csrDBFs.cNombre) && Nombre de la tabla actual
cAllPath=(cpath+ctable)
SET PATH TO &cPath
USE (cAllPath) IN 0
SELECT (cpath+ctable)
USE 'C:\DMT\DATA_LIB\'+ctable IN 0
SELECT 'C:\DMT\DATA_LIB\'+ctable
APPEND FROM &ctable
SELECT csrDBFs
SKIP
LOOP
ENDDO
MESSAGEBOX('Trabajo Terminado','Traspaso de Aplicacion',64)
CLOSE DATABASES
CLOSE TABLES
CLOSE ALL
thisform.Release
Valora esta pregunta


0