来自csv文件的批量插入(SQL),缺少值

时间:2014-07-09 15:18:36

标签: sql sql-server tsql bulkinsert

问题:

我有一张桌子

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'

错误

  

批量加载数据转换错误(类型不匹配或无效字符   对于第2行,第2列(sizeOnMedia)。

的指定代码页

参考

使用批量插入保持NULL值

Microsoft

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

StackOverflow

1 个答案:

答案 0 :(得分:1)

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

相关问题