2014-01-23 1 views
0

Мне нужна помощь :(У меня есть огромный .txt-файл с более чем 1 миллионом записей, а ive уже сохранил его в таблице sql-сервера, проблема в том, что файл АМСВО с пробелами, напримеркак вырезать данные из текстового файла и сохранить его в sql

id: 87936756     name: asduyiasdjk cel:8735434   bla:erwerwerwe      sdsd:sdfsdfsdf 

и каждая строка АМСВА с различными размерами пространства я попытался с помощью SUBSTRING, но он не работает, потому что каждая строка АМСВА с различными размерами пространства, и мне нужно, чтобы сохранить каждую строку в другом столбец таблицы в SQL Server

что я сделал, это сохранить файл txt отверстия в один столбец на сервере sql, я создал таблицу с данными только с 1 строкой называется COLUMN и это выглядит следующим образом:

123123123  NTGAMMA GROUP S.A - -         CR 43  sdfsdfsdf - 188 IN 708                                                         sdfsdfsdf  23423423423  2234234       05       -      *99991231*CONSTRUCCION DE EDIFICACIONES PARA USO RESIDENCIAL 

Это только первая строка таблицы данных, и она имеет более миллиона строк, так как я могу сохранить каждую часть этого столбца в новой таблице, как я должен сохранить что в таблице называется test и у нее есть несколько строк, например, имя телефона bla bla bla

Имеет ли SQL что-то вроде split, чтобы я мог вырезать все эти пробелы и сохранять все данные в строках, которые мне нужны для табличного теста?

ответ

1

Вы можете обновить столбец в строку, содержащую разделенные запятыми значения, удаляя все лишние пробелы, делая что-то вроде этого ..

DECLARE @TestTable TABLE(Column1 NVARCHAR(MAX)) 

INSERT INTO @TestTable VALUES 
('id: 87936756     name: asduyiasdjk cel:8735434   bla:erwerwerwe      sdsd:sdfsdfsdf') 

--Abort if necessary 
IF EXISTS (SELECT 1 FROM @TestTable WHERE Column1 LIKE '%|%') RAISERROR('Special char exists in data',16,1) 

UPDATE @TestTable 
SET Column1 = replace(
        replace(
        replace(
         LTrim(RTrim(Column1)), 
        ' ',' |'),      
        '| ',''),       
       '|',',')        

который будет форматировать ваши данные что-то вроде этого ...

SELECT * FROM @TestTable 


╔════════════════════════════════════════════════════════════════════════════╗ 
║         Column1         ║ 
╠════════════════════════════════════════════════════════════════════════════╣ 
║ id: 87936756 ,name: asduyiasdjk cel:8735434 ,bla:erwerwerwe sdsd:sdfsdfsdf ║ 
╚════════════════════════════════════════════════════════════════════════════╝ 

Затем вы можете разделить эти данные в одном столбце в несколько столбцов

See here для получения дополнительной информации.

+0

Предисловие, что с 'IF EXISTS (SELECT 1 FROM @TestTable WHERE Column1 LIKE '% |%') RAISERROR ('Специальный символ существует в данных', 16,1)' – Anon

+0

@Не очень хорошее предложение действительно не стесняйтесь обновлять/edit мой ответ. Я не против. Я нахожусь по телефону сейчас. Не могу увидеть чертову вещь на этом крошечном экране. –

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