sql >> Databasteknik >  >> RDS >> Sqlserver

Infoga en tom sträng på SQL Server med BULK INSERT

Så vitt jag vet kan bulkinsert inte infoga en tom sträng, den kan antingen behålla nullvärde eller använda standardvärde med keepnulls-alternativet eller utan keepnulls-alternativet. För dina 3 exempelposter, efter infogning av databasen, bör det vara så här:

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

Anledningen är att bulkinfogningen kommer att behandla ditt första rad, andra kolumnvärde som null; för andra 2 rader, tar det andra kolumnvärdet som inte null och tar det som det är.

Istället för att låta Bulk Insert infoga ett tomt strängvärde åt dig, kan du låta dig tabellkolumn ha standardvärdet som tom sträng.

Exempel som följande:


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

Resultatet blir som följande:(Den första raden i din CSV kommer att få en tom sträng)

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


  1. Få alla barn efter förälder i mysql-fråga

  2. Få SQL Server Cross-databas beroenden

  3. Ny MySQL-drivrutin orsakar java.sql.SQLNonTransientConnectionException:CLIENT_PLUGIN_AUTH krävs

  4. Ska jag lägga till en typkolumn för att designa arv i postgreSQL?