bulk Insert

04/09/2003 - 18:49 por MauricioPardo | Informe spam
Hola a todos,

Necesito importar datos de una tabla a otra con
caracteristicas iguales, la unica diferencia es que en la
tabla que necesito importar existe un campo indentity.

haciendo el siguiente comando genera error.

Insert into tabla2
Select * from tabla1

y genera error porque como comente la tabla2 tiene un
campo identity, pero no quiero quitar el campo identity y
ademas quiero importar en ese campo el valor que venga de
la tabla1.

con:

SET IDENTITY_INSERT tabla2 ON
GO

podria insertar pero unicamente utilizando un:
Insert into tabla2(campos...) Values (valores...) osea
registro a registro..

Existe alguna solucion en SQL-server diferente a:
- cambiar el IDENTITY_INSERT para ON y crear un cursor
para insertar registro a registro..
- tener que entrar por enterprise manager y apagar el
identity, importar y colocar el identity..
(esto se puede hacer por script?... viendo las opciones de
alter table no encontre)

Agradesco su atención..

Preguntas similare

Leer las respuestas

#1 Fernando España
04/09/2003 - 20:31 | Informe spam
Prueba con esta instruccion

SET IDENTITY_INSERT

Fernando España


"MauricioPardo" wrote in message
news:115701c37304$8b804a90$
Hola a todos,

Necesito importar datos de una tabla a otra con
caracteristicas iguales, la unica diferencia es que en la
tabla que necesito importar existe un campo indentity.

haciendo el siguiente comando genera error.

Insert into tabla2
Select * from tabla1

y genera error porque como comente la tabla2 tiene un
campo identity, pero no quiero quitar el campo identity y
ademas quiero importar en ese campo el valor que venga de
la tabla1.

con:

SET IDENTITY_INSERT tabla2 ON
GO

podria insertar pero unicamente utilizando un:
Insert into tabla2(campos...) Values (valores...) osea
registro a registro..

Existe alguna solucion en SQL-server diferente a:
- cambiar el IDENTITY_INSERT para ON y crear un cursor
para insertar registro a registro..
- tener que entrar por enterprise manager y apagar el
identity, importar y colocar el identity..
(esto se puede hacer por script?... viendo las opciones de
alter table no encontre)

Agradesco su atención..
Respuesta Responder a este mensaje
#2 MauricioPardo
04/09/2003 - 22:00 | Informe spam
Fernando, Liliana y demas colegas del News,

Tal vez no me di a entender en un 100%.. porque ya probe
con SET IDENTITY_INSERT tabla2 ON

Voy ha hacer un ejemplo para que entiendan mi pequeño
problema..

Create Table tabla1
( campo1 int identity,
campo2 varchar(10) )
Go

Create Table tabla2
( campo1 int identity,
campo2 varchar(10) )
go
Insert into tabla1 (campo2) values ('tres')
Insert into tabla1 (campo2) values ('uno')
Insert into tabla1 (campo2) values ('dos')
Insert into tabla1 (campo2) values ('cuatro')
go

SET IDENTITY_INSERT tabla2 ON
go

quiero hacer:
Insert into tabla2
Select campo1,campo2 from tabla1
go
Nota: esto genera error ..., tengo SQL-Server 2000...


Quiero conservar el valor del campo1 de la tabla1 para la
tabla2.

No quiero hacer:
Insert into tabla2
Select campo2 from tabla1
porque posiblemente el valor del campo1 de la tabla1 quede
diferente al de la tabla2..

las unicas opciones que encontre fueron:


- cambiar el IDENTITY_INSERT para ON y crear un cursor
para insertar registro a registro..

o

- tener que entrar por enterprise manager y apagar el
identity, importar y colocar el identity..
(esto se puede hacer por script?... viendo las opciones de
alter table no encontre)


De nuevo gracias por su atencion


Hola a todos,

Necesito importar datos de una tabla a otra con
caracteristicas iguales, la unica diferencia es que en la
tabla que necesito importar existe un campo indentity.

haciendo el siguiente comando genera error.

Insert into tabla2
Select * from tabla1

y genera error porque como comente la tabla2 tiene un
campo identity, pero no quiero quitar el campo identity y
ademas quiero importar en ese campo el valor que venga de
la tabla1.

con:

SET IDENTITY_INSERT tabla2 ON
GO

podria insertar pero unicamente utilizando un:
Insert into tabla2(campos...) Values (valores...) osea
registro a registro..

Existe alguna solucion en SQL-server diferente a:
- cambiar el IDENTITY_INSERT para ON y crear un cursor
para insertar registro a registro..
- tener que entrar por enterprise manager y apagar el
identity, importar y colocar el identity..
(esto se puede hacer por script?... viendo las opciones


de
alter table no encontre)

Agradesco su atención..

.

Respuesta Responder a este mensaje
#3 Liliana Sorrentino
04/09/2003 - 22:24 | Informe spam
Mauricio,
Entendí cual es tu necesidad, por eso la respuesta. No es necesario usar un
cursor (¡Dios me libre!), y tampoco alterar la tabla porque no podés
quitarle la propiedad de IDENTITY al campo.

Solo escribí tu INSERT como te sugerí en la respuesta anterior, asi:

Insert into tabla2 (campo1, campo2)
Select * from tabla1

Saludos... Liliana.

"MauricioPardo" escribió en el mensaje
news:145501c3731f$3a937ab0$
Fernando, Liliana y demas colegas del News,

Tal vez no me di a entender en un 100%.. porque ya probe
con SET IDENTITY_INSERT tabla2 ON

Voy ha hacer un ejemplo para que entiendan mi pequeño
problema..

Create Table tabla1
( campo1 int identity,
campo2 varchar(10) )
Go

Create Table tabla2
( campo1 int identity,
campo2 varchar(10) )
go
Insert into tabla1 (campo2) values ('tres')
Insert into tabla1 (campo2) values ('uno')
Insert into tabla1 (campo2) values ('dos')
Insert into tabla1 (campo2) values ('cuatro')
go

SET IDENTITY_INSERT tabla2 ON
go

quiero hacer:
Insert into tabla2
Select campo1,campo2 from tabla1
go
Nota: esto genera error ..., tengo SQL-Server 2000...


Quiero conservar el valor del campo1 de la tabla1 para la
tabla2.

No quiero hacer:
Insert into tabla2
Select campo2 from tabla1
porque posiblemente el valor del campo1 de la tabla1 quede
diferente al de la tabla2..

las unicas opciones que encontre fueron:


- cambiar el IDENTITY_INSERT para ON y crear un cursor
para insertar registro a registro..

o

- tener que entrar por enterprise manager y apagar el
identity, importar y colocar el identity..
(esto se puede hacer por script?... viendo las opciones de
alter table no encontre)


De nuevo gracias por su atencion


Hola a todos,

Necesito importar datos de una tabla a otra con
caracteristicas iguales, la unica diferencia es que en la
tabla que necesito importar existe un campo indentity.

haciendo el siguiente comando genera error.

Insert into tabla2
Select * from tabla1

y genera error porque como comente la tabla2 tiene un
campo identity, pero no quiero quitar el campo identity y
ademas quiero importar en ese campo el valor que venga de
la tabla1.

con:

SET IDENTITY_INSERT tabla2 ON
GO

podria insertar pero unicamente utilizando un:
Insert into tabla2(campos...) Values (valores...) osea
registro a registro..

Existe alguna solucion en SQL-server diferente a:
- cambiar el IDENTITY_INSERT para ON y crear un cursor
para insertar registro a registro..
- tener que entrar por enterprise manager y apagar el
identity, importar y colocar el identity..
(esto se puede hacer por script?... viendo las opciones


de
alter table no encontre)

Agradesco su atención..

.

Respuesta Responder a este mensaje
#4 Fernando España
05/09/2003 - 00:08 | Informe spam
Es lo que sugeri al consultar el identity, liliana tiene toda la razon..}

Fernando España.


"Liliana Sorrentino" wrote in message
news:
Mauricio,
Entendí cual es tu necesidad, por eso la respuesta. No es necesario usar


un
cursor (¡Dios me libre!), y tampoco alterar la tabla porque no podés
quitarle la propiedad de IDENTITY al campo.

Solo escribí tu INSERT como te sugerí en la respuesta anterior, asi:

Insert into tabla2 (campo1, campo2)
Select * from tabla1

Saludos... Liliana.

"MauricioPardo" escribió en el mensaje
news:145501c3731f$3a937ab0$
Fernando, Liliana y demas colegas del News,

Tal vez no me di a entender en un 100%.. porque ya probe
con SET IDENTITY_INSERT tabla2 ON

Voy ha hacer un ejemplo para que entiendan mi pequeño
problema..

Create Table tabla1
( campo1 int identity,
campo2 varchar(10) )
Go

Create Table tabla2
( campo1 int identity,
campo2 varchar(10) )
go
Insert into tabla1 (campo2) values ('tres')
Insert into tabla1 (campo2) values ('uno')
Insert into tabla1 (campo2) values ('dos')
Insert into tabla1 (campo2) values ('cuatro')
go

SET IDENTITY_INSERT tabla2 ON
go

quiero hacer:
Insert into tabla2
Select campo1,campo2 from tabla1
go
Nota: esto genera error ..., tengo SQL-Server 2000...


Quiero conservar el valor del campo1 de la tabla1 para la
tabla2.

No quiero hacer:
Insert into tabla2
Select campo2 from tabla1
porque posiblemente el valor del campo1 de la tabla1 quede
diferente al de la tabla2..

las unicas opciones que encontre fueron:


- cambiar el IDENTITY_INSERT para ON y crear un cursor
para insertar registro a registro..

o

- tener que entrar por enterprise manager y apagar el
identity, importar y colocar el identity..
(esto se puede hacer por script?... viendo las opciones de
alter table no encontre)


De nuevo gracias por su atencion


>Hola a todos,
>
>Necesito importar datos de una tabla a otra con
>caracteristicas iguales, la unica diferencia es que en la
>tabla que necesito importar existe un campo indentity.
>
>haciendo el siguiente comando genera error.
>
>Insert into tabla2
> Select * from tabla1
>
>y genera error porque como comente la tabla2 tiene un
>campo identity, pero no quiero quitar el campo identity y
>ademas quiero importar en ese campo el valor que venga de
>la tabla1.
>
>con:
>
>SET IDENTITY_INSERT tabla2 ON
>GO
>
>podria insertar pero unicamente utilizando un:
>Insert into tabla2(campos...) Values (valores...) osea
>registro a registro..
>
>Existe alguna solucion en SQL-server diferente a:
>- cambiar el IDENTITY_INSERT para ON y crear un cursor
>para insertar registro a registro..
>- tener que entrar por enterprise manager y apagar el
>identity, importar y colocar el identity..
>(esto se puede hacer por script?... viendo las opciones
de
>alter table no encontre)
>
>Agradesco su atención..
>
>.
>


Respuesta Responder a este mensaje
#5 Mauricio Pardo
05/09/2003 - 01:24 | Informe spam
Liliana,
Fernando,

Gracias,

Mi error se encontraba en que yo no hacia explicitos los
campos en el insert

osea al digitar:

SET IDENTITY_INSERT tabla2 ON
go

Insert into tabla2
Select * from tabla1

Salia el siguiente error:
Server: Msg 8101, Level 16, State 1, Line 2
An explicit value for the identity column in
table 'tabla2' can only be specified when a column list is
used and IDENTITY_INSERT is ON.

Al cambiar por :
SET IDENTITY_INSERT tabla2 ON
go

Insert into tabla2 (campo1,campo2)
Select * from tabla1

Ya no sale...



Es lo que sugeri al consultar el identity, liliana tiene


toda la razon..}

Fernando España.


"Liliana Sorrentino"


wrote in message
news:
Mauricio,
Entendí cual es tu necesidad, por eso la respuesta. No




es necesario usar
un
cursor (¡Dios me libre!), y tampoco alterar la tabla




porque no podés
quitarle la propiedad de IDENTITY al campo.

Solo escribí tu INSERT como te sugerí en la respuesta




anterior, asi:

Insert into tabla2 (campo1, campo2)
Select * from tabla1

Saludos... Liliana.

"MauricioPardo" escribió en




el mensaje
news:145501c3731f$3a937ab0$
Fernando, Liliana y demas colegas del News,

Tal vez no me di a entender en un 100%.. porque ya probe
con SET IDENTITY_INSERT tabla2 ON

Voy ha hacer un ejemplo para que entiendan mi pequeño
problema..

Create Table tabla1
( campo1 int identity,
campo2 varchar(10) )
Go

Create Table tabla2
( campo1 int identity,
campo2 varchar(10) )
go
Insert into tabla1 (campo2) values ('tres')
Insert into tabla1 (campo2) values ('uno')
Insert into tabla1 (campo2) values ('dos')
Insert into tabla1 (campo2) values ('cuatro')
go

SET IDENTITY_INSERT tabla2 ON
go

quiero hacer:
Insert into tabla2
Select campo1,campo2 from tabla1
go
Nota: esto genera error ..., tengo SQL-Server 2000...


Quiero conservar el valor del campo1 de la tabla1 para




la
tabla2.

No quiero hacer:
Insert into tabla2
Select campo2 from tabla1
porque posiblemente el valor del campo1 de la tabla1




quede
diferente al de la tabla2..

las unicas opciones que encontre fueron:


- cambiar el IDENTITY_INSERT para ON y crear un cursor
para insertar registro a registro..

o

- tener que entrar por enterprise manager y apagar el
identity, importar y colocar el identity..
(esto se puede hacer por script?... viendo las opciones




de
alter table no encontre)


De nuevo gracias por su atencion


>Hola a todos,
>
>Necesito importar datos de una tabla a otra con
>caracteristicas iguales, la unica diferencia es que en




la
>tabla que necesito importar existe un campo indentity.
>
>haciendo el siguiente comando genera error.
>
>Insert into tabla2
> Select * from tabla1
>
>y genera error porque como comente la tabla2 tiene un
>campo identity, pero no quiero quitar el campo




identity y
>ademas quiero importar en ese campo el valor que venga




de
>la tabla1.
>
>con:
>
>SET IDENTITY_INSERT tabla2 ON
>GO
>
>podria insertar pero unicamente utilizando un:
>Insert into tabla2(campos...) Values (valores...)




osea
>registro a registro..
>
>Existe alguna solucion en SQL-server diferente a:
>- cambiar el IDENTITY_INSERT para ON y crear un cursor
>para insertar registro a registro..
>- tener que entrar por enterprise manager y apagar el
>identity, importar y colocar el identity..
>(esto se puede hacer por script?... viendo las opciones
de
>alter table no encontre)
>
>Agradesco su atención..
>
>.
>






.

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida