構造がカンマ区切りのテキストファイルである
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ステートメントで宣言されていない列を無視する方法はありますか?
これを行うには、フォーマットファイルを使用できます。
http://msdn.Microsoft.com/en-gb/library/ms178129.aspx
http://msdn.Microsoft.com/en-gb/library/ms179250.aspx
または、少し活気のある方法が必要な場合は、それをすべてインポートして、後で列をドロップします。 ;)
最も簡単な方法は、必要な列だけを含むビューを作成することです。
次に、そのビューに一括挿入します。
例:
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'
一括挿入を実行する代わりに、フィールドを無視することはできません。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]