如何从文本文件中删除数据并将其保存在sql中

时间:2014-01-23 15:29:12

标签: sql sql-server

我需要帮助:(我有一个超过100万条记录的巨大的.txt文件,我已经将它保存到sql server表中,问题是该文件带有空格,例如

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

并且每行都有不同大小的空间我尝试使用SUBSTRING但它不起作用,因为每行都有不同大小的空格,我需要将每一行保存在SQL Server中表的不同列中

我所做的是将洞txt文件保存到sql server中的一个列中我创建了一个名为data的表,只有一行名为COLUMN,它看起来像这样:

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

这只是表DATA的第一行,它有超过一百万行,所以如何将新COLUMN的每一部分保存在一个新表中,就像我必须将它保存在一个名为test的表中一样,它有一些行像名字电话bla bla bla

SQL是否有类似split的东西,所以我可以删除所有这些空格并将每个数据保存在我需要的表测试行中?

1 个答案:

答案 0 :(得分: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 了解更多信息。