2013-06-27 62 views

回答

0

將數據放入臨時表中,然後使用SQL代碼插入到生產表中。

update table1 
set field1 = NULL 
where field1 = 'null' 

或者,如果你想要做的很多領域

update table1 
    set field1 = case when field1 = 'null' then Null else Field1 End 
     , field2 = case when field2 = 'null' then Null else Field2 End 
     , field3 = case when field3 = 'null' then Null else Field3 End 
+0

謝謝!這解決了我的問題! –

+0

這是一個可怕的,可怕的解決方案。 「NULL」是一個完全有效的字符串,與null不同,所以不要這樣對待它。像這樣的事情正是導致所有以「空」姓的窮人遭遇麻煩的原因。 – Voo

+1

@Voo,你看過這個問題嗎?空值不是OP的有效值。 – HLGEM

-1

添加到HLGEM的答案,我動態地做到這一點,我加載到臨時表這裏所有列類型VARCHAR然後執行:

DECLARE @sql VARCHAR(MAX) = ''; 
SELECT @sql = CONCAT(@sql, ' 
    UPDATE [staging].[',[TABLE_NAME],'] 
    SET [',[COLUMN_NAME],'] = NULL 
    WHERE [',[COLUMN_NAME],'] = ''NULL''; 
    ') 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE [TABLE_SCHEMA] = 'staging' 
    AND [TABLE_NAME] IN ('MyTableName'); 
SELECT @sql; 
EXEC(@sql); 

然後做:

INSERT INTO [dbo].[MyTableName] ([col1], [col2], [colN]) 
SELECT [col1], [col2], [colN] 
FROM [staging].[MyTableName] 

凡表[dbo].[MyTableName]與所需的列類型定義,這也失敗了,並告訴你的類型轉換錯誤......

5

KISS

預先進行處理,全部替換「空」與「」。

即.csv文件將有

,, 

而不是

NULL,NULL, 

似乎爲我做的工作。

相關問題