使用动态模板将EDI数据读入数据库

时间:2015-03-12 13:26:44

标签: c# sql-server parsing text

我有EDI数据,我需要读入表格。我设法读取数据,它现在看起来很好,但我有2个问题,首先是如何将数据导入数据透视图。其次,读取跨块分割的数据。

EDI如下:
000000000000A1000DATA_UP_TO_THIRSTY_FIVE_CHARACTER_NOT_MORE_THAN_SIXTY_THREE000000000000A1000DATA_UP_TO_THIRSTY_FIVE_CHARACTER_NOT_MORE_THAN_SIXTY_THREE000000000000A1000DATA_UP_TO_THIRSTY_FIVE_CHARACTER_NOT_MORE_THAN_SIXTY_THREE ----------
说明:前12是事务编号,后2是字段类型,后3是计数器,剩下的是数据。单行长度为250个字符,每个块有80个字符(每行总共3个块),最后10个(短划线表示空格)是填充符。正如我所说我已经设法读取数据,问题是一些时间计数器在一个序列中。这意味着,001,002,003,表示数据分成多个块 到目前为止,我设法将拆分数据读入新行中的表格,前面的id作为关系指标(拆分数据) 表结构
ID --- FieldName --- FieldData --- SplitPrefix
01 --- TransID --- 00000000000 ---- NULL
02 --- FieldType --- A1 --------------- NULL
03 ---计数器----- 001 -------------- NULL
04 --- ActualData --- 长文 ----- NULL
05 --- TransID --- 00000000000 ---- NULL
06 --- FieldType --- A1 --------------- NULL
07 ---计数器----- 002 -------------- NULL
08 --- ActualData --- 长文 ----- 04

大约有39种Field类型,具有不同的计数器。我需要在数据透视图中显示这些数据 P.S:数据最多为36,但有时在36以内可能会有不同的数据,如:日期(03152015),政党代码(V1001)等。

我正在寻找一些关于Sql Server 2008上的TSQL的帮助或一些有关编码的帮助。

更多信息:
我有3个表,EdiTemplate:它有模板名称和描述以及与模板
相关的其他细节 EdiTemplateDetails:它包含字段相关信息,字段名称,数据类型,数据长度,isDataSplit等。
EdiTemplateData:上面已经提供了结构,这是我存储基于" EdiTemplateDetails"读取的数据的地方。

更多信息。 (sql程序)

DECLARE @cols NVARCHAR(1000),
@blid NVARCHAR(20),
@outsql nvarchar(2000)

SET @blid = '143483328278' -- comment this line in production
SELECT @cols =
STUFF((SELECT N',[' + fieldname + ']'
       FROM TEMPLATEDATA
       WHERE UNIQUEIDENTIFIER LIKE '%'+ @blid +'%'
       FOR XML PATH('')
      ), 1, 1, '');
-- Build dynamic SQL query for pivoting  

SET @outsql =

N' SELECT ' + @cols +
N' FROM (SELECT UNIQUEIDENTIFIER, FIELDNAME, FIELDDATA FROM TemplateData WHERE UNIQUEIDENTIFIER LIKE ''%' + @blid + '%''  ) AS S' +
N' PIVOT ' +
N' (MAX(FIELDDATA) FOR FIELDNAME IN (' + @cols + N')) AS P;';

0 个答案:

没有答案