A veces tenemos dos bases de datos que tienen tablas iguales o similares. Y como en una/s tabla/s de una de esas bases de datos ya se han insertado bastantes filas, nos gustaría simplemente copiar esas filas a la otra Base de Datos.
Hay muchas formas de realizar esa tarea, esta es una de ellas, es muy útil cuando son varias las tablas cuyos contenidos deseamos copiar aunque por supuesto podríamos usarla para copiar los datos de una sola tabla.
Veamos un ejemplo:
En una Base de Datos tenemos una tabla llamada BANCOS, que ya tiene insertadas varias filas:
Captura 1. Si haces clic en la imagen la verás más grande
y esas mismas filas queremos copiar en la tabla BANCOS de otra Base de Datos. Para ello, hacemos clic con el botón derecho sobre el nombre de la Base de Datos original, o sea la que tiene las filas que deseamos insertar.
Captura 2. Si haces clic en la imagen la verás más grande
en el menú contextual que nos aparece elegimos Tasks y luego Extract Database…
Captura 3. Si haces clic en la imagen la verás más grande
a continuación marcamos la opción Extract all metadata and data of the database y hacemos clic en el botón «Next»
Captura 4. Si haces clic en la imagen la verás más grande
ahora, elegimos la opción Automatically load to Script Editor y luego clic sobre el botón «Next»
Captura 5. Si haces clic en la imagen la verás más grande
en la siguiente pantalla elegimos como queremos extraer las columnas de tipo BLOB, y en la que aparece a continuación podemos desmarcar todas las opciones porque no nos harán falta para lo que deseamos hacer
Captura 6. Si haces clic en la imagen la verás más grande
después de un clic sobre el botón «Next» veremos esta pantalla:
Captura 7. Si haces clic en la imagen la verás más grande
donde tendremos que hacer clic sobre el botón «Finish» para que empiece el proceso (sí, ya sé que es medio raro tener que hacer clic sobre el botón «Finish» para que algo empiece, pero bueno, así está). Cuando el proceso se haya completado hay que hacer clic sobre el botón «Close» y nos mostrará todos los metadatos y todos los datos de nuestra Base de Datos en forma de script.
Así que ahora buscamos el comando INSERT INTO BANCOS y seleccionamos y copiamos (con CTRL+C) todas las filas que tienen ese comando:
Captura 8. Si haces clic en la imagen la verás más grande
después abrimos la otra Base de Datos, y elegimos las opciones Tools y a continuación New SQL Script
Captura 9. Si haces clic en la imagen la verás más grande
en la ventanita que aparece pegamos con CTRL+V lo los comandos INSERT INTO que habíamos copiado y finalmente hacemos clic en la opción Execute script
Captura 10. Si haces clic en la imagen la verás más grande
y listo, asunto concluido. Todas las filas de la tabla BANCOS que se encontraban en una Base de Datos fueron copiadas a la otra Base de Datos, muy fácilmente y con muy poco esfuerzo.
Hay que aclarar que esta no es la forma más rápida de copiar las filas, pero es una forma práctica y sencilla cuando las filas a copiar no son muchas, quizás hasta unas pocas centenas y además si es algo esporádico. Si las filas son muchas o si este proceso de copia se va a realizar frecuentemente entonces hay que elegir otro método.
Artículos relacionados:
El índice del blog Firebird21 | Firebird SQL
Sep 27, 2013 @ 21:57:26
Francisco
Ene 04, 2017 @ 16:41:35
Que tal Walter, espero estes bien.
te comento que hice esta pregunta en el foro, pero hoy que me fije como que esta un poco abandonado, asi que me atrevo a hacer la pregunta aquí.
Segui paso a paso esta publicación, lo que hice fue cambiar en una base de datos algunas tablas en las cuales la llave principal estaban como SMALLINT lo cambie a INTEGER.
Cree el script, lo edite, y depues lo ejecute desde SQL Manager for interbase/firebird .
Me crea las base de datos, tablas, SP, etc.
Pero al llegara agregar la información, en las tablas donde manejo DATE o TIMESTAM, me marca el error, de Invalid token …. SQL Code = -104 , Toke Unknown.
Lógicamente no me permite continuar con el resto.
Copio la instrucción del INSER INTO , y la ejecuto directamente en el SQL Editor, y me marca lo mismo.
Manualmente he cambiado el formato de fechas y no me funciona.
Te pongo una línea:
INSERT INTO SOLICITUDES
VALUES (1, 2, 2014-05-15, 2014-05-22, ‘PRUEBAS’, 1, 2014/11/11 12:00:00, ‘S’, 1, 2015/11/04 05:04:16);
Alguna sugerencia? , te agradezco.
wrov
Ene 04, 2017 @ 16:50:51
Las fechas deben estar rodeadas por apóstrofos:
‘2014/11/11’
Saludos.
Walter.
Francisco
Ene 04, 2017 @ 18:09:29
Tienes toda la razón.
Había hecho ya pruebas, pero como el error me marcaba en la columna de la hora, solo le ponía apóstrofos a las columnas TimeStamp.
que raro que al crear el script, no lo haga en automático el sql manager. (que mas pedirles)
Ahora buscaré la forma de poner esos apóstrofos al script.
Gracias, saludos, que estés bien.
Francisco
Ene 05, 2017 @ 00:24:33
Walter.
Para comentarte que con IBExpert, puedes generar los script de las tablas individualmente, esto para generar el script de datos para INSERT, UPDATE / INSERT.
A diferencia del SQL Manager for Firebird, que te genera todo en un solo archivo, aquí lo puedes ir generando con el nombre de cada tabla.
Una ventaja que te genera con las fechas envueltas en apóstrofos.
Ahí mismo puedes ejecutar el script para la nueva base de datos que fue mi caso.
Espero le pueda servir a otra persona.
wrov
Ene 05, 2017 @ 12:21:35
Muchas gracias por el comentario.
Saludos.
Walter.