Hola Julio:
Para poder hacer una actualización eficiente tendrías que agregar a la tabla una columna de algo asi como versión, si tu hora fecha de servidor sgbd y pc origen de datos están sincronizados, podes usar un campo del datetime, para el versionado.
Cada vez que se modifica un registro, se actualiza el campo de version, si es un registro nuevo, se le carga un valor inicial.
Si no usas datetime (o date), podes usar un campo que empezas a contar desde 1 y le vas sumando 1 en cada cambio.
Obtenes un cursor completo (codigo, version) de la tabla a actualizar.
Indexas por código.
Haces un bucle sobre
En origen (sea DBF -> mySQL o viceversa), cuando se quieren pasar los datos al otro ámbito, debes ir leyendo el archivo de origen y:
Si codigo en origen no está en destino, registro origen se inserta en destino.
Si código está en ambas tablas, comparas versión. Si versión origen mayor (posterior) a destino, se actualiza el registro completo (descripcion, precio, version).
Y asi con todos los registros.
Una vez que terminaste de pasar datos nuevos, lees el cursor destino y buscas en origen si las codigos de destino estan en origen, si no están en origen, tienes que darlos de baja en la tabla destino (delete)
El uso de campo de version, te evita tener que comparar todos los campos de ambas tablas, en tu caso son pocos, pero si tuvieras muchos más campos, sería engorroso.
Si usas datetime, podes mejorar el desempeño:
a) Obtenes el mayor datetime de version en la tabla destino.
b) Seleccionas en tabla origen, todos los registros con datetimes posteriores al obtenido en destino.
c) Aplicas lo descripto en principio, de esa manera, el chequeo es mucho mas corto (el proceso de borrado no puede evitarse, salvo que al dar de baja, se cree un registro de bajas y se procesen las bajas contra dicho archivo).
Espero que te sea util, y cualquier aclaración, preguntas.
saludos: Miguel, La Pampa (RA)