2015-10-15 139 views
-1

我有一个类似于下面格式的文件。如何将数据从一个表格列插入另一个表格

test.txt

1 | ABC | A,B,C,D

我需要一个存储过程,以逐行为基础在细节表中插入记录。例如

ID Name Type 
1 ABC A 
1 ABC B 
1 ABC C 
1 ABC D 

是否有可能通过SQL中的存储过程。任何帮助将不胜感激。提前致谢。

回答

1

您可以:

  • 拆分它在你的代码,然后将其插入

  • 散装在一个临时表中插入他们和他们分裂的所有这样的:

    -- SAMPLE Data 
    declare @data table(id int, name varchar(10), type varchar(100)) 
    insert into @data(id, name, type) values 
    (1, 'ABCD', 'A, B, C, D') 
    , (2, 'EFG', 'E, F, G') 
    , (3, 'HI', 'H, I') 
    
    -- Split All Rows and Types 
    Select ID, Name, ltrim(rtrim(value)) 
    From (
        Select *, Cast('<x>'+Replace(d.type,',','</x><x>')+'</x>' As XML) As types 
        From @data d 
    ) x 
    Cross Apply (
        Select types.x.value('.', 'varchar(10)') as value 
        From x.types.nodes('x') as types(x) 
    ) c 
    

输出:

ID Name Type 
    1 ABCD A 
    1 ABCD B 
    1 ABCD C 
    1 ABCD D 
    2 EFG  E 
    2 EFG  F 
    2 EFG  G 
    3 HI  H 
    3 HI  I 
相关问题