Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Insérer une chaîne vide sur SQL Server avec BULK INSERT

Autant que je sache, l'insertion en bloc ne peut pas insérer de chaîne vide, elle peut soit conserver la valeur nulle, soit utiliser la valeur par défaut avec l'option keepnulls ou sans l'option keepnulls. Pour vos 3 exemples d'enregistrements, après avoir inséré la base de données, cela devrait ressembler à :

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

La raison en est que l'insertion en bloc traitera votre valeur de première ligne et de deuxième colonne comme nulle ; pour les 2 autres lignes, prendra la valeur de la deuxième colonne comme non nulle et la prendra telle quelle.

Au lieu de laisser Bulk Insert insérer une valeur de chaîne vide pour vous, vous pouvez laisser votre colonne de table ayant la valeur par défaut comme chaîne vide.

Exemple comme suit :


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

Le résultat sera le suivant :(La première ligne de votre CSV recevra une chaîne vide)

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