2017-06-07 5 views
0

に挿入し、テーブルどのように構造化されていないデータを分割し、iは非構造化データを分割しない方法テーブル

以下データに挿入行うiが異なる列のセットにフォーマットする必要が非構造化データを表します。下記のショーのようになります、テーブルに

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,'') 

最初の文字列の後に続くエントリのために、それをどのように複製するのですか?

ご協力いただければ幸いです。

+0

あなたはデータ行を分割するサブストリング機能を使用することができます。 –

+0

これを手動で行う方法を考えて、それをクエリの操作に変換します。 – STLDeveloper

+0

あなたが実際に必要なルールをリストし、何らかの努力を払う(質問を投稿する)なら、私たちが喜んで助けてくれると確信しています。初心者の方は、すでにテーブルにこれをロードしていますか? –

答えて

0

次のように私が試した:(あなたの形式ごとにループの長さにしてください)

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 
関連する問題