2016-07-13 57 views
0

我有一個.txt文件,它是6.00 GB。它是一個製表符分隔的文件,所以當我嘗試將它加載到SQL Server時,列分隔符是選項卡。使用where子句將txt文件導入SQL Server

我需要將該.txt文件加載到數據庫中,但我不需要6.00 Gb文件中的所有行。我需要能夠使用條件像

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

但是這是一個文本文件,我不能將它與條件加載到數據庫。

任何人都可以幫助我嗎?

+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個名字。我可以嘗試使用visual studio或任何其他工具。? – 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中。