14

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

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 语句中声明的列?

4

3 回答 3

11

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

然后批量插入该视图。

例子:

create table people (name varchar(20) not null, dob date null, sex char(1) null)

--If you are importing only name from list of names in names.txt

create view vwNames as
select name from people

bulk insert 'names.txt'
于 2015-04-17T10:42:45.050 回答
10

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

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

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

或者,如果您想要一种稍微厚颜无耻的方式,只需将其全部导入并在之后删除一列。;)

于 2013-02-05T16:19:04.857 回答
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]
于 2013-05-24T18:22:15.173 回答