SQL Server导入向导将NULL视为字面字符串'NULL&#39。[英] SQL Server Import Wizard treats NULL as literal string 'NULL'

问题描述

当我尝试将.csv comma删除的平面文件导入Microsoft SQL server 2008R2 64-bit instance>时,对于string列中的string在原始数据中a NULL将变为字符串"NULL",在numeric列中我收到导入错误.任何人都可以帮忙吗???

推荐答案

将数据放入登台表中,然后使用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

其他推荐答案

亲吻

预处理,将所有" null"替换为"".

ie .csv文件将具有

,,

而不是

NULL,NULL,

似乎为我完成了工作.

其他推荐答案

添加到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]用所需的列类型定义,这也会失败并告诉您类型转换错误...

本文地址:https://www.itbaoku.cn/post/902940.html