2012-09-19 13 views
6

Ich habe Probleme beim Einfügen von Null-Wert aus einer Bulk-Insert-Anweisung.SQL Server Bulk einfügen Nullen in Zeitspalte

Zwei Spalten sind nullfähig und die ID ist Identität.

Die int Nullable funktioniert gut, aber die time nicht.

  • hier der Großteil Aussage:

    BULK INSERT Circulation 
    FROM '.....file.cs' 
    WITH (FIRSTROW = 2, MAXERRORS = 0, FIELDTERMINATOR = ',', 
        ROWTERMINATOR = '', KEEPNULLS) 
    
  • Hier ist ein Auszug aus der csv:

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

Was bedeutet, dass ich versuche, sowohl in denen einfügen nulls Säulen. Das Ergebnis ist ithe int Spalte mit NULL und die Zeitspalte mit 00:00:00

enter image description here

+0

Dies ist nicht einmal eine Bulk-Insert-Anweisung, das Beispiel verwendet einen SP mit der "Einfügen" "Werte" -Nomenklatur – Diogo

Antwort

1

„NULL“ anstelle von „Standardwert von Col2“ einzufügen, müssen Sie die -k-Schalter verwenden oder KEEPNULL-Option, wie in den folgenden Beispielen bcp und BULK INSERT demonstriert.

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

Ich weiß nicht, warum Spalte Zeit mit 00.00.00 einfügen, aber wenn Sie NULL müssen dann ist es möglich, Trigger, um zu versuchen zu erstellen und Bulk mit FIRE_TRIGGER Argument

laufen
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)