2010-07-05 7 views

Respuesta

7

tiene dos opciones, en realidad:

  • hacer no insertar el valor de la columna IDENTITY y dejar que SQL Server manejar eso para usted

  • si no puede o no quiere hacer eso, debe activar IDENTITY_INSERT en esa tabla, luego inserte el valor y luego vuelva a desactivarlo:

    SET IDENTITY_INSERT (table name) ON 
    -- do your bcp import here 
    SET IDENTITY_INSERT (table name) OFF 
    

    Con esta configuración, puede insertar sus propios valores en una columna de IDENTIDAD.

    Si lo hace, es posible que también tenga que sembrar de nuevo la columna de identidad después de la inserción para evitar posibles duplicados en su identidad:

    DBCC CHECKIDENT('table name', RESEED) 
    
6

que tenía que hacer lo mismo y mi colega señaló que puede usar el interruptor -E en BCP para hacer esto.

A partir de los documentos ...

"-E Especifica que el valor de identidad o valores en el archivo de datos importado se van a utilizar para la columna de identidad. Si no se da -E, los valores de identidad para esta columna en el archivo de datos que se importa se ignoran ".

Trabaja mucho, gracias Jan!

2

Crear una vista de exclusión de la columna de identidad es también útil, ningún archivo de formato requerido:

bcp mydb.dbo.myview in file.txt -S(local) -T -e err.log -c 
+0

Crafty! Esto también funciona con 'freebcp'. –

Cuestiones relacionadas