我需要帮助:(我有一个超过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的东西,所以我可以删除所有这些空格并将每个数据保存在我需要的表测试行中?
答案 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 了解更多信息。