使用BULK INSERT时忽略某些列

woo*_*gie 10 sql t-sql sql-server bulkinsert sql-server-2008

我有一个逗号分隔的文本文件与结构

field1   field2   field3   field4
1        2        3        4
Run Code Online (Sandbox Code Playgroud)

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

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

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

Cha*_*gwu 10

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

然后批量插入到该视图中.


Jan*_*ley 8

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

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

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

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

  • +1之后建议删除列. (6认同)

小智 5

你不能在做批量插入时忽略一个字段,不要这样做..加载所有 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]
Run Code Online (Sandbox Code Playgroud)