2012-09-19 5 views
6

バルク挿入文からNULL値を挿入できません。SQL Serverバルクは時間列にNULLを挿入します

2つの列がNULL可能であり、Idが同一である。

int nullable workd out fineですが、timeはありません。ここで

  • バルク声明:

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

私は両方のそれらにNULLを挿入しようとしていることを意味:ここで

BULK INSERT Circulation 
FROM '.....file.cs' 
WITH (FIRSTROW = 2, MAXERRORS = 0, FIELDTERMINATOR = ',', 
    ROWTERMINATOR = '', KEEPNULLS) 
  • は、CSVの抽出物であります列。結果ではなく、「Col2にのデフォルト値」の「NULL」を挿入するには〇時00分00秒

    enter image description here

  • +0

    この例では、一括挿入ステートメントでさえありませんが、この例では「挿入」「値」という名前のSPを使用しています – Diogo

    答えて

    1

    とithe NULLと時間列とint型の列である、あなたは-kスイッチを使用する必要があります次のbcpおよびBULK INSERTの例に示すように、KEEPNULLオプションを使用します。

    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

    時間列00:00:00を挿入し、なぜ私は知らないが、あなたがNULL必要がある場合、トリガーを作成し、FIRE_TRIGGER引数でBULKのINSERTを実行しようとすることが可能である

    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)