Migrar datos

Hola, como puedo pasar datos de una base oiracle a una mysql, y lo contrario de una mysql a oracle.
Gracias, Hozkar
2

2 respuestas

Respuesta
1
Yo lo que haría sería hacer una aplicación php, en la que abriría 2 conexiones con bases de datos, una con la de Oracle y otra con mysql, después es ir ejecutando el select * de las distintas tablas e ir insertándolos en el otro tipo de BD.
Lo mejor sería que antes de hacer la aplicación te creases la réplica de la tabla en el SGBD al que quieras "retransmitir" los datos, pero si quieres "rizar el rizo" incluso podrías hacer que el programa leyera antes de nada las características y los campos de las distintas tablas e ir ejecutando la sentencia "Create table ...".
Para esta última parte sé que en php hay funciones que te listan las tablas de una bd mysql, pero para Oracle creo que no, así que tendrías que ejecutar la sentencia sql, que ahora mismo no sé si es "list tables", y luego ir recogiendo los datos en tus parámetros y tratarlos.
Y después hacer lo que te he dicho al principio.
Si quieres código más explícito dime, que intentaré ayudarte, pero mañana a la mañana me voy a Madrid, y no volveré hasta el Domingo(por si ves que tardo mucho en contestarte).
Las dos bases de datos están creadas, el problema es manejan los mismos datos (campos o atributos)pero están distribuidos en diferentes tablas, si pudieras darme un ejemplo de código para hacer esto, te lo agradecería.
Gracias, Hozkar
Si por ejemplo en Oracle tienes una tabla que luego en mysql se divide en 2 distintas la cosa es más chunga, deberías ir seleccionando por los nombres de las tablas y los campos y haciendo una especie de filtro.
Si no se dividen el código sería algo así:
<? $con1=ora_connect(....);
$con2=mysql_connect(....);
$tablas=mysql_list_tables(...);
while($tabla=tabla1,tabla2...){
$SQL1="Select * from $tabla";
$result=mysql_query($con2,$SQL1);
while($tupla=mysql_fetch_array($result)){
$aux1=$tupla[0];
$aux2=$tupla[1];
...............
$SQL2="Insert into $tabla values($aux1,$aux2,...)";
$ora_execute($SQL2);
}
}
Más o menos seria algo así, si lo tienes en distintas tablas haz el filtro con los típicos ifs y divides los campos obtenidos y ejecutas más preguntas sql.
El ejemplo está para migrar datos de mysql a Oracle, para hacerlo al revés habría que cambiar una cosa(aparte de lo obvio), y es que no existe la función list_tables para oracle, así que tendrías que encontrar como se hace eso en sql, y pasárselo al ora_execute("List tables"), o algo así.
Respuesta
1
Utiliza los volcados SQL de ambas bases de datos. Son ficheros de texto en lenguaje SQL que es bastante estándar y que lo interpretan ambas bases de datos. Algunos tipos de variables tienen nombres distintos en estas bases de datos, por lo que tendrás que cambiarlos manualmente.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas