使用BULK INSERT时忽略某些列

时间:2013-02-05 16:08:45

标签: sql sql-server sql-server-2008 tsql bulkinsert

我有一个逗号分隔的文本文件,其结构为

field1   field2   field3   field4
1        2        3        4

我编写了以下脚本来批量插入文本文件,但我想省略第3列

create table test (field1 varchar(50),field2 varchar(50),field4 varchar(50))
go
bulk insert test
from 'c:\myFilePath'
with 
(fieldterminator=',',
rowterminator='\n'
)

插入工作正常,但插入的结果使field4看起来像 field3,field4,所以字段3实际上只是连接到field4上。我正在使用的平面文件是几个演出,不能轻易修改。有没有办法使用批量插入但是忽略了未在create table语句中声明的列?

3 个答案:

答案 0 :(得分:10)

最简单的方法是创建一个只包含所需列的视图。

然后批量插入该视图。

答案 1 :(得分:8)

您可以使用格式文件执行此操作:

http://msdn.microsoft.com/en-gb/library/ms178129.aspx

http://msdn.microsoft.com/en-gb/library/ms179250.aspx

或者如果你想要一种略显笨拙的方式,只需将其全部导入然后删除一列。 ;)

答案 2 :(得分:4)

在进行批量插入时你不能忽略一个字段,而不是这样做。加载所有4列并删除你不想要的列

create table test (field1 varchar(50),field2 varchar(50), field3 varchar(50),field4 varchar(50))
go
bulk insert test
from 'c:\myFilePath'
with 
(fieldterminator=',',
rowterminator='\n'
)

ALTER TABLE test DROP column [field3]