Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Wstaw pusty ciąg w SQL Server za pomocą BULK INSERT

O ile mi wiadomo, wstawianie zbiorcze nie może wstawić pustego ciągu, może zachować wartość null lub użyć wartości domyślnej z opcją keepnulls lub bez opcji keepnulls. Dla 3 przykładowych rekordów, po wstawieniu bazy danych, powinno wyglądać następująco:

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

Powodem jest to, że wstawienie zbiorcze potraktuje pierwszy wiersz, drugą kolumnę jako wartość null; dla pozostałych 2 wierszy przyjmie wartość drugiej kolumny jako niepustą i przyjmie ją taką, jaka jest.

Zamiast zezwalać na wstawianie zbiorcze, aby wstawić pustą wartość ciągu, możesz pozwolić, aby kolumna tabeli miała wartość domyślną jako pusty ciąg.

Przykład:


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

Wynik będzie następujący:(Pierwszy wiersz w pliku CSV otrzyma pusty ciąg)

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak znaleźć N kolejnych rekordów w tabeli za pomocą SQL?

  2. „CREATE VIEW” musi być pierwszą instrukcją w partii zapytania

  3. SQL Server rzutuje varchar na int

  4. Eliminowanie zduplikowanych wartości na podstawie tylko jednej kolumny tabeli

  5. Jak zwrócić listę typów danych w SQL Server (T-SQL)