sql >> Database >  >> RDS >> Sqlserver

Voeg een lege string in op SQL Server met BULK INSERT

Voor zover ik weet, kan bulkinsertie geen lege tekenreeks invoegen, het kan de null-waarde behouden of de standaardwaarde gebruiken met de optie keepnulls of zonder de optie keepnulls. Voor uw 3 voorbeeldrecords, na het invoegen van de database, zou het als volgt moeten zijn:

    | id    |  name 
    | 1     |  NULL 
    | 1     |  ""   
    | 1     |  ''   

De reden is dat de bulk-insert uw eerste rij en tweede kolomwaarde als null zal behandelen; voor andere 2 rijen, zal de tweede kolomwaarde niet null zijn en deze nemen zoals deze is.

In plaats van Bulk invoegen toe te staan ​​een lege tekenreekswaarde voor u in te voegen, kunt u uw tabelkolom met de standaardwaarde als lege tekenreeks laten invoegen.

Voorbeeld als volgt:


CREATE TABLE BulkInsertTest (id int, name varchar(10) DEFAULT '')
Bulk Insert same CSV file into table
BULK INSERT Adventure.dbo.BulkInsertTest
   FROM '....\test.csv'
   WITH 
      (
         FIELDTERMINATOR ='\,',
         ROWTERMINATOR ='\n'
      )
   SELECT * FROM BulkInsertTest

Het resultaat is als volgt:(De eerste rij in je CSV krijgt een lege string)

    | id    |  name 
    | 1     |   
    | 1     |  ""   
    | 1     |  ''   


  1. MySQL-fout:sleutelspecificatie zonder sleutellengte

  2. Selecteer het aantal MCQ-antwoorden op basis van het antwoord van de vorige vraag

  3. UTF-16/Unicode-gegevens opslaan in SQL Server

  4. Is het vreemd dat mijn SQLAlchemy MySQL-verbinding altijd slaapt?