2016-07-13 11 views
0

私は.txtというファイルが6.00GBです。これはタブ区切りのファイルなので、SQL Serverに読み込もうとすると列区切り記号がタブになります。where句を使用してtxtファイルをSQL Serverにインポートする

.txtファイルをデータベースにロードする必要がありますが、6.00Gbファイルのすべての行は必要ありません。私は

select * 
into <my table> 
where column5 in ('ab, 'cd') 

のような条件を使用できるようにする必要がありますが、これはテキストファイルであり、その状態でDBにロードすることはできませんよ。

誰もがこれを手伝ってくれますか?

+1

いいえ、これをSQL Serverでネイティブに行うことはできません – SQLMason

+0

フラットファイルから*ほとんどの行をインポートしますか、ごくわずかですか? ['grep'](http://www.gnu.org/software/grep/manual/grep.html)のように、あなたが非常に簡単にできることを探している状態ですか?その場合は、インポートする前にデータをフィルタリングすることができます。それ以外の場合は、ファイル全体をインポートしてから、 'DELETE FROM' ...' WHERE'文を実行する必要があります。 –

+0

ありがとうBOB、私はファイルの約20%をインポートすることです、事は私が条件を置く必要があるフラットファイルの既定の列名(列11)のプレビューを行うときです。 colmnには約65の別名があり、2つの名前でフィルタリングする必要があります。ビジュアルスタジオやその他のツールを試してみることはできますか? – user1960217

答えて

1

BULK INSERTコマンドで試しましたか?この解決策を見てみましょう:

--Create temporary table 
CREATE TABLE #BulkTemporary 
(
    Id int, 
    Value varchar(10) 
) 

--BULK INSERT has no WHERE clause 
BULK INSERT #BulkTemporary FROM 'D:\Temp\File.txt' 
WITH (FIELDTERMINATOR = '\t', ROWTERMINATOR = '\n') 

--Filter results 
SELECT * INTO MyTable FROM #BulkTemporary WHERE Value IN ('Row2', 'Row3') 

--Drop temporary table 
DROP TABLE #BulkTemporary 

これが役に立ちます。

0

ステージングテーブルに一括挿入して、実際に必要なデータを本番テーブルに移動するだけです。 Where句は、SQL Server内の特定の条件に基づいて何かを行うものであり、SQL Serverにデータをロードするものではありません。

関連する問題