Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Fügen Sie eine leere Zeichenfolge auf SQL Server mit BULK INSERT ein

Soweit ich weiß, kann die Masseneinfügung keine leere Zeichenfolge einfügen, sie kann entweder den Nullwert beibehalten oder den Standardwert mit der Option keepnulls oder ohne die Option keepnulls verwenden. Für Ihre 3 Beispieldatensätze sollte es nach dem Einfügen der Datenbank wie folgt aussehen:

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

Der Grund dafür ist, dass die Masseneinfügung den Wert Ihrer ersten Zeile und zweiten Spalte als null behandelt; für die anderen 2 Zeilen wird der zweite Spaltenwert als nicht null angenommen und so genommen, wie er ist.

Anstatt Masseneinfügung zum Einfügen eines leeren Zeichenfolgenwerts für Sie zuzulassen, können Sie Ihre Tabellenspalte mit dem Standardwert als leere Zeichenfolge zulassen.

Beispiel wie folgt:


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

Das Ergebnis sieht wie folgt aus:(Die erste Zeile in Ihrer CSV-Datei erhält eine leere Zeichenfolge)

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