示例表包含字段Id (表的标识,一个整数);Name (一个允许空值的简单属性,它是一个字符串)
我正在尝试一个包含以下内容的CSV:
1、 1,“ 1,'‘
它们都没有给出一个空字符串作为大容量插入的结果。我正在使用Server 2012。
我能做什么?
发布于 2014-01-03 10:55:49
请记住,只有在不使用KEEPNULLS选项的情况下,才会插入指定的默认值。使用与上面相同的示例,如果将选项KEEPNULLS添加到BULK INSERT中,即:
BULK INSERT BulkInsertTest
FROM '....\test.csv'
WITH
(
FIELDTERMINATOR ='\,',
ROWTERMINATOR ='\n',
KEEPNULLS
)将导致忽略默认列值,并从空字符串插入NULL,即:
SELECT * FROM BulkInsertTest现在将给你:
id name
1 NULL
1 ""
1 ''在您的示例中添加KEEPNULLS似乎没有很好的理由,但我刚才遇到了一个类似的问题,在BULK INSERT中需要KEEPNULLS。
我的解决方案是在暂存表[name]中定义BulkInsertTest列NOT NULL,但请记住,缺省列值将被忽略,空字符串将被插入。
请参阅这里的更多内容:在批量导入期间保留Nulls或UseDefault值( Server)
https://stackoverflow.com/questions/15581814
复制相似问题