从csv文件大容量插入(TSQL),但缺少值



问题:

我有一张桌子

CREATE TABLE BestTableEver 
    (
    Id INT,
    knownValue INT,
    unknownValue INT DEFAULT 0,
    totalValue INT DEFAULT 0);

我有这个CSV文件(Loki.CSV(

Id, knownValue, unknownValue, totalValue 
1, 11114
2, 11135
3, 11235

我想在表中进行大容量插入,由于我还不知道unknownValue和totalValue的值,我希望它们采用默认值(如表创建中定义的(

到目前为止我的方法

create procedure populateLikeABoss
@i_filepath NVARCHAR(2048)
DECLARE @thor nvarchar(MAX)
    SET @thor=
        'BULK INSERT populateLikeABoss
        FROM ' + char(39) + @i_filepath + char(39) +
        'WITH
        (
            FIELDTERMINATOR = '','',
            ROWTERMINATOR = ''n'',
            FIRSTROW = 2,
            KEEPNULLS
        )'
    exec(@thor)
END

并调用该过程来执行神奇的

populateLikeABoss 'C:Loki.csv'

错误

大容量加载数据转换错误(类型不匹配或字符无效对于指定的代码页(。

参考

使用大容量插入保持NULL值

Microsoft

类似的问题没有答案我需要

StackOverflow

我认为csv不是预期的格式。为了保持null,每行中的记录应采用1, 11114,,格式。另一种选择是删除标题中的最后两列。

最新更新