【发布时间】:2014-07-09 15:18:36
【问题描述】:
问题:
我有一张桌子
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 值
没有我需要的答案的类似问题
【问题讨论】:
-
我认为 csv 不是预期的格式。为了保持为空,每行中的记录应为 1、11114。其他选项是删除标题中的最后两列。
-
我省略了 FIRSTROW = 2 的标题。但 ',' 成功了。我现在觉得很傻。谢谢
-
@KiranHegde 您应该将其发布为答案,因为它解决了 OP 的问题。
标签: sql sql-server tsql bulkinsert