2012-09-19 16 views
6

Sto riscontrando problemi nell'inserimento di valore null da un'istruzione di inserimento in blocco.sql server bulk null di inserimento nella colonna del tempo

Due colonne sono annullabili e l'ID è identità.

Il int nullable ha funzionato correttamente, ma il time no.

  • Ecco la dichiarazione di massa:

    BULK INSERT Circulation 
    FROM '.....file.cs' 
    WITH (FIRSTROW = 2, MAXERRORS = 0, FIELDTERMINATOR = ',', 
        ROWTERMINATOR = '', KEEPNULLS) 
    
  • Ecco un estratto del csv:

    ID, IDStopLine, IDException, Hour, PositionHour, Day 
    
    ,28, 8, 12:20, 52, 0 
    
    ,29, 163, , 1, 
    

Il che significa che sto cercando di inserire i null in quelli sia colonne. Il risultato è ithe colonna int con NULL e la colonna tempo con 00:00:00

enter image description here

+0

che non è nemmeno una dichiarazione di inserimento in blocco, l'esempio utilizza un SP con la nomenclatura "valori" "inserimento" – Diogo

risposta

1

Per inserire "NULL" invece di "Il valore di default di Col2", è necessario utilizzare l'interruttore -k o l'opzione KEEPNULL, come dimostrato nei seguenti esempi di bcp e BULK INSERT.

USE AdventureWorks; 
GO 
BULK INSERT MyTestDefaultCol2 
    FROM 'C:\MyTestEmptyField2-c.Dat' 
    WITH (
     DATAFILETYPE = 'char', 
     FIELDTERMINATOR = ',', 
     KEEPNULLS 
    ); 
GO 

http://msdn.microsoft.com/en-us/library/ms187887.aspx

2

Non so il motivo per cui colonna tempo inserto con 0:00:00, ma se avete bisogno NULL allora è possibile per cercare di creare grilletto ed eseguire BULK INSERT con FIRE_TRIGGER argomento

CREATE TRIGGER dateNull ON dbo.Circulation 
INSTEAD OF INSERT 
AS 
BEGIN 
    INSERT dbo.Circulation(IdStopline, IdException, Hour, PositionHour, Day) 
    SELECT IdStopline, IdException, NULLIF(Hour, '00:00:00.0000000'), PositionHour, Day FROM inserted 
END  

BULK INSERT dbo.Circulation 
FROM 'you_file.csv' 
WITH (FIRSTROW = 2, 
     MAXERRORS = 0, FIELDTERMINATOR = ',', 
     ROWTERMINATOR = '\n', KEEPNULLS, FIRE_TRIGGERS) 
Problemi correlati