sql >> Databáze >  >> RDS >> Sqlserver

Vložte prázdný řetězec na SQL Server pomocí BULK INSERT

Pokud vím, hromadné vkládání nemůže vložit prázdný řetězec, může buď zachovat hodnotu null, nebo použít výchozí hodnotu s možností keepnulls nebo bez možnosti keepnulls. Pro vaše 3 ukázkové záznamy by po vložení databáze mělo být toto:

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

Důvodem je, že hromadné vložení bude považovat hodnotu prvního řádku a druhého sloupce za hodnotu null; pro další 2 řádky bude mít hodnota druhého sloupce hodnotu nenulovou a bude ji brát tak, jak je.

Namísto hromadného vkládání, aby za vás vložil hodnotu prázdného řetězce, můžete nechat sloupec tabulky s výchozí hodnotou jako prázdný řetězec.

Příklad:


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

Výsledek bude následující:(První řádek ve vašem CSV bude mít prázdný řetězec)

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


  1. Optimalizace překrývajících se dotazů Část 1:Úvod a vylepšené řešení T-SQL

  2. Oracle PL/SQL – kolekce (vnořené tabulky)

  3. Úvod do synonym v SQL Server

  4. PHP Vyberte z MySQL, kde datum je 7 dní v budoucnosti