Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Insira uma string vazia no SQL Server com BULK INSERT


Até onde eu sei, a inserção em massa não pode inserir uma string vazia, ela pode manter o valor nulo ou usar o valor padrão com a opção keepnulls ou sem a opção keepnulls. Para seus 3 registros de amostra, após inserir o banco de dados, deve ficar assim:

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

O motivo é que a inserção em massa tratará o valor da primeira linha e da segunda coluna como nulo; para outras 2 linhas, tomará o valor da segunda coluna como não nulo e o considerará como está.

Em vez de permitir Bulk Insert inserir um valor de string vazio para você, você pode permitir que a coluna da tabela tenha o valor padrão como string vazia.

Exemplo como 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

O resultado será o seguinte:(A primeira linha do seu CSV receberá uma string vazia)
    | id    |  name 
    | 1     |   
    | 1     |  ""   
    | 1     |  ''