4

当我尝试将.csv逗号分隔的平面文件导入 a时Microsoft SQL server 2008R2 64-bit instance,原始数据中的string列 aNULL变为文字字符串"NULL",并且在numeric列中我收到导入错误。有人可以帮忙吗???

4

3 回答 3

10

对其进行预处理,将所有“NULL”替换为“”。

即 .csv 文件将具有

,,

代替

NULL,NULL,

似乎为我做这项工作。

于 2015-07-06T16:18:27.750 回答
3

将数据放入临时表,然后使用 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
于 2013-06-27T18:58:15.183 回答
0

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

于 2014-09-22T12:24:11.297 回答