sql >> Base de Datos >  >> RDS >> Sqlserver

Inserte una cadena vacía en SQL Server con BULK INSERT

Hasta donde yo sé, la inserción masiva no puede insertar una cadena vacía, puede mantener el valor nulo o usar el valor predeterminado con la opción keepnulls o sin la opción keepnulls. Para sus 3 registros de muestra, después de insertar la base de datos, debería ser como:

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

El motivo es que la inserción masiva tratará el valor de la primera fila y la segunda columna como nulo; para otras 2 filas, tomará el valor de la segunda columna como no nulo y lo tomará como está.

En lugar de permitir que Bulk Insert inserte un valor de cadena vacío por usted, puede permitir que la columna de la tabla tenga un valor predeterminado como cadena vacía.

Ejemplo de la siguiente manera:


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

El resultado será el siguiente:(La primera fila de su CSV obtendrá una cadena vacía)

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