2010-07-05 8 views

risposta

7

avete due opzioni, in realtà:

  • fanno non inserire il valore per la colonna IDENTITY e cerchiamo di SQL Server di gestire questo per voi

  • se non puoi o non vuoi farlo, devi attivare IDENTITY_INSERT su tale tabella, quindi inserire il valore e quindi disattivarlo di nuovo:

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

    Con questa impostazione, è possibile inserire i propri valori in una colonna IDENTITY.

    Se si esegue questa operazione, potrebbe anche essere necessario per reseed la colonna di identità dopo l'inserto al fine di evitare eventuali duplicati nella vostra identità:

    DBCC CHECKIDENT('table name', RESEED) 
    
6

avevo bisogno di fare la stessa cosa e il mio collega ha sottolineato che è possibile utilizzare l'opzione -E su BCP per fare ciò.

Dalla documentazione ...

"-E Specifica che il valore di identità o valori nel file di dati importati devono essere utilizzati per la colonna di identità. Se -E non è dato, i valori di identità per questa colonna nel file di dati importato vengono ignorati. "

Funziona a meraviglia, grazie Jan!

2

Creazione di una vista escludendo la colonna di identità è anche utile, nessun file formato richiesto:

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

Crafty! Funziona anche con 'freebcp'. –

Problemi correlati