2016-07-13 5 views
0

У меня есть файл .txt, который составляет 6,00 ГБ. Это файл с разделителями табуляции, поэтому, когда я пытаюсь загрузить его в SQL Server, разделитель столбцов является вкладкой.Импорт файла txt в SQL Server с предложением where

Мне нужно загрузить этот файл .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 имени. Могу ли я попробовать использовать визуальную студию или любой другой инструмент? – 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.

Смежные вопросы