Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Inserire una stringa vuota in SQL Server con BULK INSERT

Per quanto ne so, l'inserimento in blocco non può inserire una stringa vuota, può mantenere un valore nullo o utilizzare il valore predefinito con l'opzione keepnulls o senza l'opzione keepnulls. Per i tuoi 3 record di esempio, dopo aver inserito il database, dovrebbe essere come:

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

Il motivo è che l'inserimento collettivo tratterà la prima riga, il valore della seconda colonna come null; per altre 2 righe, prenderà il valore della seconda colonna come non nullo e lo prenderà così com'è.

Invece di consentire all'inserimento collettivo di inserire un valore di stringa vuoto per te, puoi lasciare che la colonna della tabella abbia il valore predefinito come stringa vuota.

Esempio come segue:


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

Il risultato sarà il seguente:(La prima riga nel tuo CSV otterrà una stringa vuota)

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