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 に答える