Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Вмъкнете празен низ в SQL Server с BULK INSERT

Доколкото знам, груповото вмъкване не може да вмъкне празен низ, може или да запази нулева стойност, или да използва стойност по подразбиране с опция keepnulls или без опция keepnulls. За вашите 3 примерни записа, след вмъкване на база данни, трябва да е като:

<преди> | ID | име | 1 | NULL | 1 | "" | 1 | ''

Причината е, че груповото вмъкване ще третира стойността на първия ви ред, втората колона като нула; за други 2 реда ще приеме стойността на втората колона като ненулева и ще я вземе такава, каквато е.

Вместо да позволите на Bulk Insert да вмъкне празна стойност на низ вместо вас, можете да позволите на колоната на таблицата да има стойност по подразбиране като празен низ.

Пример, както следва:


CREATE TABLE BulkInsertTest (id int, name varchar(10) DEFAULT '')
 
Групово вмъкване на същия CSV файл в таблицата
BULK INSERT Adventure.dbo.BulkInsertTest
   FROM '....\test.csv'
   WITH 
      (
         FIELDTERMINATOR ='\,',
         ROWTERMINATOR ='\n'
      )
   SELECT * FROM BulkInsertTest
 

Резултатът ще бъде като следния:(Първият ред във вашия CSV ще получи празен низ)

<преди> | ID | име | 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. SQL израз за вмъкване на запис в таблица, която има колона за идентичност?

  2. Ще пропусне ли задание на SQL Server насрочено изпълнение, ако вече се изпълнява?

  3. Проблем със SQL подзаявка, използваща Top() на свързан сървър

  4. Jquery AutoComplete с база данни

  5. Изпълнение на умножение в T-SQL