Игнорировать определенные столбцы при использовании BULK INSERT

у меня есть текстовый файл с разделителями-запятыми со структурой

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 похожим поле3,поле4, поэтому поле 3 На самом деле, прикрепленного поле4. Плоские файлы, с которыми я работаю несколько гигов и не могут быть легко изменены. Есть ли способ использовать bulk insert, но игнорировать его столбцы, которые не объявлены в инструкции create table?

3 ответов


для этого можно использовать файл формата:

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

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

или, если вы хотите немного нахальный способ, просто импортируйте все это и поместите столбец после этого. ;)


самый простой способ-создать представление с требуемыми столбцами.

затем массовая вставка в это представление.


вы не можете игнорировать поле при выполнении bulk insert, вместо этого .. Загрузите все 4 столбца и отбросьте colum, который вы не хотите

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]