2013-06-27 64 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, 

似乎为我做的工作。

相关问题