Importar datos de una base de datos a otra mediante INSERTS

15/06/2007 - 16:32 por Anna | Informe spam
Buenas, tengo una base de datos con datos dentro de ella. Y tengo otra base
de datos con la misma estructura. Quiero conseguir meter los datos de una de
ellas a la otra a través de obtención de las consultas INSERT INTO, para yo
ejecutarlas en la segunda base de datos que no tiene datos.
¿Alguna sugerencia para obtener las sentencias?

Muchas gracias

Preguntas similare

Leer las respuestas

#1 Federico A Colli
15/06/2007 - 16:57 | Informe spam
No probaste con DTS (SQL 2000) o IISI (Integration Serivces para SQL 2005)?

Carpe diem, tempus fugit.
El hombre sabio no da las respuestas correctas, propone las preguntas
correctas (Claude Levi-Strauss).
La sabiduría no es un producto de la educación sino de toda una vida por
adquirirla (Albert Einstein).
El sabio puede sentarse en un hormiguero, pero sólo el necio se queda
sentado en él (Proverbio chino).

AUS Federico A. Colli


"Anna" escribió en el mensaje
news:
Buenas, tengo una base de datos con datos dentro de ella. Y tengo otra
base
de datos con la misma estructura. Quiero conseguir meter los datos de una
de
ellas a la otra a través de obtención de las consultas INSERT INTO, para
yo
ejecutarlas en la segunda base de datos que no tiene datos.
¿Alguna sugerencia para obtener las sentencias?

Muchas gracias

Respuesta Responder a este mensaje
#2 Anna
15/06/2007 - 17:18 | Informe spam
Es que no lo he utilizado nunca, y no sé como funciona. Me lo podrías explicar?
Yo tengo SQL SERVER 2005.


"Federico A Colli" wrote:

No probaste con DTS (SQL 2000) o IISI (Integration Serivces para SQL 2005)?

Carpe diem, tempus fugit.
El hombre sabio no da las respuestas correctas, propone las preguntas
correctas (Claude Levi-Strauss).
La sabiduría no es un producto de la educación sino de toda una vida por
adquirirla (Albert Einstein).
El sabio puede sentarse en un hormiguero, pero sólo el necio se queda
sentado en él (Proverbio chino).

AUS Federico A. Colli


"Anna" escribió en el mensaje
news:
> Buenas, tengo una base de datos con datos dentro de ella. Y tengo otra
> base
> de datos con la misma estructura. Quiero conseguir meter los datos de una
> de
> ellas a la otra a través de obtención de las consultas INSERT INTO, para
> yo
> ejecutarlas en la segunda base de datos que no tiene datos.
> ¿Alguna sugerencia para obtener las sentencias?
>
> Muchas gracias
>



Respuesta Responder a este mensaje
#3 Federico A Colli
15/06/2007 - 17:39 | Informe spam
Mientras no sea SQL 2005 Express no hay problema.
Necesitas instalar el servicio de Integration Services, luego inicias un
proyecto (la instalacion crea una cceso directo al entorno de desarrollo) de
Integration Services y allí creas los paquetes.

http://technet.microsoft.com/en-us/...43501.aspx

http://msdn2.microsoft.com/en-us/li...df_topic22
http://msdn2.microsoft.com/en-us/li...67031.aspx

Carpe diem, tempus fugit.
El hombre sabio no da las respuestas correctas, propone las preguntas
correctas (Claude Levi-Strauss).
La sabiduría no es un producto de la educación sino de toda una vida por
adquirirla (Albert Einstein).
El sabio puede sentarse en un hormiguero, pero sólo el necio se queda
sentado en él (Proverbio chino).

AUS Federico A. Colli


"Anna" escribió en el mensaje
news:
Es que no lo he utilizado nunca, y no sé como funciona. Me lo podrías
explicar?
Yo tengo SQL SERVER 2005.


"Federico A Colli" wrote:

No probaste con DTS (SQL 2000) o IISI (Integration Serivces para SQL
2005)?

Carpe diem, tempus fugit.
El hombre sabio no da las respuestas correctas, propone las preguntas
correctas (Claude Levi-Strauss).
La sabiduría no es un producto de la educación sino de toda una vida por
adquirirla (Albert Einstein).
El sabio puede sentarse en un hormiguero, pero sólo el necio se queda
sentado en él (Proverbio chino).

AUS Federico A. Colli


"Anna" escribió en el mensaje
news:
> Buenas, tengo una base de datos con datos dentro de ella. Y tengo otra
> base
> de datos con la misma estructura. Quiero conseguir meter los datos de
> una
> de
> ellas a la otra a través de obtención de las consultas INSERT INTO,
> para
> yo
> ejecutarlas en la segunda base de datos que no tiene datos.
> ¿Alguna sugerencia para obtener las sentencias?
>
> Muchas gracias
>






Respuesta Responder a este mensaje
#4 Anna
15/06/2007 - 17:48 | Informe spam
Tengo el express, la versión gratuita, ¿no hay otro modo de conseguir los
inserts?

"Federico A Colli" wrote:

Mientras no sea SQL 2005 Express no hay problema.
Necesitas instalar el servicio de Integration Services, luego inicias un
proyecto (la instalacion crea una cceso directo al entorno de desarrollo) de
Integration Services y allí creas los paquetes.

http://technet.microsoft.com/en-us/...43501.aspx

http://msdn2.microsoft.com/en-us/li...df_topic22
http://msdn2.microsoft.com/en-us/li...67031.aspx

Carpe diem, tempus fugit.
El hombre sabio no da las respuestas correctas, propone las preguntas
correctas (Claude Levi-Strauss).
La sabiduría no es un producto de la educación sino de toda una vida por
adquirirla (Albert Einstein).
El sabio puede sentarse en un hormiguero, pero sólo el necio se queda
sentado en él (Proverbio chino).

AUS Federico A. Colli


"Anna" escribió en el mensaje
news:
> Es que no lo he utilizado nunca, y no sé como funciona. Me lo podrías
> explicar?
> Yo tengo SQL SERVER 2005.
>
>
> "Federico A Colli" wrote:
>
>> No probaste con DTS (SQL 2000) o IISI (Integration Serivces para SQL
>> 2005)?
>>
>> Carpe diem, tempus fugit.
>> El hombre sabio no da las respuestas correctas, propone las preguntas
>> correctas (Claude Levi-Strauss).
>> La sabiduría no es un producto de la educación sino de toda una vida por
>> adquirirla (Albert Einstein).
>> El sabio puede sentarse en un hormiguero, pero sólo el necio se queda
>> sentado en él (Proverbio chino).
>>
>> AUS Federico A. Colli
>>
>>
>> "Anna" escribió en el mensaje
>> news:
>> > Buenas, tengo una base de datos con datos dentro de ella. Y tengo otra
>> > base
>> > de datos con la misma estructura. Quiero conseguir meter los datos de
>> > una
>> > de
>> > ellas a la otra a través de obtención de las consultas INSERT INTO,
>> > para
>> > yo
>> > ejecutarlas en la segunda base de datos que no tiene datos.
>> > ¿Alguna sugerencia para obtener las sentencias?
>> >
>> > Muchas gracias
>> >
>>
>>
>>
>



Respuesta Responder a este mensaje
#5 Jesús López
16/06/2007 - 11:46 | Informe spam
Si esto lo ejecutas en la base de datos fuente:

DECLARE @BaseDatosDestino sysname
SET @BaseDatosDestino = 'Copia'
SELECT 'INSERT INTO ' + @BaseDatosDestino + '.' + S.name + '.' + T.Name + '
SELECT * FROM ' +
S.name + '.' + T.Name
FROM sys.tables T JOIN sys.schemas S ON T.schema_id = S.schema_id
WHERE T.type = 'U'

Te da las instrucciones SQL para copiar los registros de todas las tablas.

Luego podrías abrir un cursor sobre esta select e ir ejecutando las
instrucciones:


DECLARE @BaseDatosDestino sysname
SET @BaseDatosDestino = 'Copia'

DECLARE Sentencias CURSOR
FOR
SELECT 'INSERT INTO ' + @BaseDatosDestino + '.' + S.name + '.' + T.Name + '
SELECT * FROM ' +
S.name + '.' + T.Name
FROM sys.tables T JOIN sys.schemas S ON T.schema_id = S.schema_id
WHERE T.type = 'U'
OPEN Sentencias
DECLARE @Sentencia varchar(max)
FETCH Sentencias INTO @Sentencia
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT @Sentencia
EXEC (@Sentencia)
FETCH Sentencias INTO @Sentencia

END
CLOSE Sentencias
DEALLOCATE Sentencias

Pero aquí hay dos problemas a resolver:
1) Los autonuméricos
2) Las claves externas


Para resolver el problema de los autonuméricos podrías ejecutar la
instrucción SET INDENTITY INSERT ON para todas las tablas de la base de
datos destino antes de meter los datos y ejecutar la instrucción SET
IDENTITY INSERT OFF para todas las tablas de la base de datos destino
después de meter los datos. Podrías usar la mísma técnica para generar las
sentencias SET IDENTITY INSERT que para generar las sentencias INSERT INTO.

Para resolver el problema de las claves externas podrías desactivarlas antes
de meter los datos y activarlas después. Para ello podrías usar la sentencia
ALTER TABLE NombreTabla NOCHECK CONSTRAINT NombreClaveExterna para
desactivarla y TABLE NombreTabla CHECK CONSTRAINT NombreClaveExterna .
También podrías usar la misma técnica para generar estas sentencias.

De todas formas podrías usar otras técnicas para crear una copia de una base
de datos mucho más fácil y eficiente. Por ejemplo podrías hacer una copia de
seguridad de la base de datos a copiar y restaurarla con otro nombre y
cambiando los archivos de datos y registro de transaciones de nombre con la
opción MOVE del comando RESTORE.



Saludos:

Jesús López.
Solid Quality Mentors
www.solidq.com

"Anna" escribió en el mensaje
news:
Tengo el express, la versión gratuita, ¿no hay otro modo de conseguir los
inserts?

"Federico A Colli" wrote:

Mientras no sea SQL 2005 Express no hay problema.
Necesitas instalar el servicio de Integration Services, luego inicias un
proyecto (la instalacion crea una cceso directo al entorno de desarrollo)
de
Integration Services y allí creas los paquetes.

http://technet.microsoft.com/en-us/...43501.aspx

http://msdn2.microsoft.com/en-us/li...df_topic22
http://msdn2.microsoft.com/en-us/li...67031.aspx

Carpe diem, tempus fugit.
El hombre sabio no da las respuestas correctas, propone las preguntas
correctas (Claude Levi-Strauss).
La sabiduría no es un producto de la educación sino de toda una vida por
adquirirla (Albert Einstein).
El sabio puede sentarse en un hormiguero, pero sólo el necio se queda
sentado en él (Proverbio chino).

AUS Federico A. Colli


"Anna" escribió en el mensaje
news:
> Es que no lo he utilizado nunca, y no sé como funciona. Me lo podrías
> explicar?
> Yo tengo SQL SERVER 2005.
>
>
> "Federico A Colli" wrote:
>
>> No probaste con DTS (SQL 2000) o IISI (Integration Serivces para SQL
>> 2005)?
>>
>> Carpe diem, tempus fugit.
>> El hombre sabio no da las respuestas correctas, propone las preguntas
>> correctas (Claude Levi-Strauss).
>> La sabiduría no es un producto de la educación sino de toda una vida
>> por
>> adquirirla (Albert Einstein).
>> El sabio puede sentarse en un hormiguero, pero sólo el necio se queda
>> sentado en él (Proverbio chino).
>>
>> AUS Federico A. Colli
>>
>>
>> "Anna" escribió en el mensaje
>> news:
>> > Buenas, tengo una base de datos con datos dentro de ella. Y tengo
>> > otra
>> > base
>> > de datos con la misma estructura. Quiero conseguir meter los datos
>> > de
>> > una
>> > de
>> > ellas a la otra a través de obtención de las consultas INSERT INTO,
>> > para
>> > yo
>> > ejecutarlas en la segunda base de datos que no tiene datos.
>> > ¿Alguna sugerencia para obtener las sentencias?
>> >
>> > Muchas gracias
>> >
>>
>>
>>
>



Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida