Sql 如何拆分非结构化数据并将其插入表中

Sql 如何拆分非结构化数据并将其插入表中,sql,sql-server,Sql,Sql Server,如何拆分非结构化数据并将其插入表中 下面的数据表示非结构化数据,我需要将其格式化为一组不同的列并将其插入表中 ABB0512 709023378812005327020220953171 025336141992033270207033123002663270200401ABC02055 ABC02055CBL MURARJIPET,MALAD MAlAD MHIN3270204 ABC

如何拆分非结构化数据并将其插入表中

下面的数据表示非结构化数据,我需要将其格式化为一组不同的列并将其插入表中

ABB0512  709023378812005327020220953171        025336141992033270207033123002663270200401ABC02055       ABC02055CBL MURARJIPET,MALAD MAlAD      MHIN3270204     ABC                                                          333000000000050000000000000050000000000000000000333000000000050000000000000000000000000000000000   000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000

ABB0222  709023378812005327020220953171    025222141992033270207033123002663270200401PQR02055       PQR02055CBL MURARJIPET,THANE THANE      MHIN3270204     PQR                                                          222000000000010000000000000010000000000000000000222000000000010000000000000000000000000000000000   000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000
格式化后的数据结构如下所示:

----a---------b------------c---------------------d-----e
========================================================================
ABC02055    ABC02055    CBL MURARJIPET,MALAD    MAlAD   MHIN

PQR02055    PQR02055    CBL MURARJIPET,THANE    THANE   MHIN
下面的查询仅给出第一个字符串的预期结果

Declare @variablestring varchar(max)
set @variablestring = substring(@strval,0,407)
print @variablestring
INSERT INTO tbldummyEntries(A, B, C,D,E,F)
values( CAST(SUBSTRING(@variablestring, 84, 15) AS Varchar(MAX)) ,
    CAST(SUBSTRING(@variablestring, 99, 8) AS Varchar(MAX)) ,
    CAST(SUBSTRING(@variablestring, 107, 22) AS Varchar(MAX)),
    CAST (SUBSTRING(@variablestring, 130, 13) AS Varchar(MAX)),
    CAST (SUBSTRING (@variablestring, 143, 5) AS Varchar(MAX)),
    CAST (SUBSTRING(@variablestring , 148 , 261) AS Varchar(MAX)))
set @strval=REPLACE(@strval,@variablestring,'')
在第一个条目之后,如何为下面的条目复制它

任何帮助都将不胜感激。

我尝试了以下方法:(根据您的格式保持循环长度)


您可以使用substring函数拆分数据行。请考虑如何手动执行此操作,然后将其转换为查询中的操作。如果您确实列出了所需的规则并显示了一些努力(发布查询),我相信我们会很乐意提供帮助。。。。或者也许有人会帮上忙。首先,您是否已按原样将其加载到表中?别让我们久等了,我已经尝试过使用substring函数,但不知道如何复制它以用于以后的条目。已经用我到现在为止尝试过的查询进行了编辑!您可以使用WITH FORMATFILE大容量插入文件。要创建格式文件,请使用本文。当然,SQLServer必须具有对数据文件和格式化文件的读取权限,很可能您无法从用户配置文件导入文件
Declare @variablestring varchar(max),@strval varchar(max)
set @strval='ABB0512  709023378812005327020220953171        025336141992033270207033123002663270200401ABC02055       ABC02055CBL MURARJIPET,MALAD MAlAD      MHIN3270204     ABC                                                          333000000000050000000000000050000000000000000000333000000000050000000000000000000000000000000000   000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000

ABB0222  709023378812005327020220953171    025222141992033270207033123002663270200401PQR02055       PQR02055CBL MURARJIPET,THANE THANE      MHIN3270204     PQR                                                          222000000000010000000000000010000000000000000000222000000000010000000000000000000000000000000000   000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000'
set @variablestring = substring(@strval,0,407)
while len(@strval)>406
begin
INSERT INTO tbldummyEntries(A, B, C,D,E,F) values
select CAST(SUBSTRING(@variablestring, 84, 15) AS Varchar(MAX)) ,
    CAST(SUBSTRING(@variablestring, 99, 8) AS Varchar(MAX)) ,
    CAST(SUBSTRING(@variablestring, 107, 22) AS Varchar(MAX)),
    CAST (SUBSTRING(@variablestring, 130, 13) AS Varchar(MAX)),
    CAST (SUBSTRING (@variablestring, 143, 5) AS Varchar(MAX)),
    CAST (SUBSTRING(@variablestring , 148 , 261) AS Varchar(MAX))
set @strval=REPLACE(@strval,@variablestring,'')
set @variablestring = substring(@strval,0,407)
    end