2017-02-16 106 views
1

這似乎是一個微不足道的問題。它是。但我已經搜索了一天以上,仍然沒有答案:批量插入 - 如何告訴SQLServer插入空字符串而不是空

我希望做一個批量插入,其中的數據類型爲varchar(100),我希望插入一個空字符串。不是Null但是空的。例如,對於表:

create table temp(columnName varchar(100)) 

我想插入一個空字符串作爲值:

BULK INSERT sandbox..temp FROM 
'file.txt' WITH (FIELDTERMINATOR = '|#', ROWTERMINATOR = '|:'); 

而且文件內容是row1|:row2|:|:|:。所以它包含4行,其中最後兩行打算爲空字符串。但他們插入爲NULL


這個問題是不一樣的重複標記問題:在一個專欄中,我希望有同時插入容量:NULL,也爲空字符串。答案提供的只有其中一個,但不是兩個。

+0

PS:我不喜歡默認約束之類的黑客行爲。對它不感興趣。 – Jatin

+0

空弦...爲什麼? – jarlh

+1

因爲在很多情況下,空字符串也是合法的值。 長答案:在我們的大型應用程序中,目前我們不使用批量和空字符串插入。我們計劃轉移到散裝。無法顯式處理服務器代碼中的空字符串,因爲它會令人難以置信地破壞很多事情。 – Jatin

回答

2

嗯,不要這樣顯式插入空字符串,爲什麼不讓表列的默認值爲空字符串,並且在批量插入時不要傳遞這些列的任何值。類似於

create table temp(columnName varchar(100) default '') 
+2

OP認爲這種方法是黑客行爲,並在評論中這樣說。 –

+0

我沒有DV,我仍然認爲這是一個可行的方法。 –

+0

@ rory.ap,沒關係,並沒有回答關於OP的想法。這是一個不錯的方法。如果OP認爲它是黑客,那麼這是他的個人意見 – Rahul