示例表包含字段Id(表的标识,整数);Name(一个允许空值的简单属性,它是一个字符串)
Id
Name
我正在尝试包含以下内容的CSV:
1, 1,”“ 1,’‘
1,
1,”“
1,’‘
由于批量插入,它们都没有给我一个空字符串。我正在使用SQL Server 2012。
我能做些什么?
据我所知,批量插入不能插入空字符串,它可以保留null值,也可以使用带有keepnulls选项或不带有keepnulls选项的默认值。对于您的3个样本记录,在插入数据库之后,它应类似于:
| id | name | 1 | NULL | 1 | "" | 1 | ''
原因是,批量插入会将您的第一行,第二列的值视为空;对于其他2行,将第二列的值设为非null,并保持原样。
您可以让具有默认值的表列作为空字符串,而不是让Bulk Insert为您插入空字符串值。
示例如下:
CREATE TABLE BulkInsertTest (id int, name varchar(10) DEFAULT '') 批量将相同的CSV文件插入表格 BULK INSERT Adventure.dbo.BulkInsertTest FROM '....\test.csv' WITH ( FIELDTERMINATOR ='\,', ROWTERMINATOR ='\n' ) SELECT * FROM BulkInsertTest
结果将如下所示:(CSV的第一行将获得一个空字符串)
| id | name | 1 | | 1 | "" | 1 | ''