我们从客户端接收固定长度的数据集,看起来是这样的:上传多行记录到SQL Server
1 SOMEFILE 20110922
2 20110101ABC999
3 JOHN SMITH 19800201
4 5000000 1000
2 20060101DEF999
3 JANE KOTZE 19811001
4 200000 800
5 5200000 1800
其中每行第一个位置的数字表示该行的信息类型。该类型是:
1 Header record (only appears once, in the first line)
2 Contract record
3 Person record
4 Amounts record
5 Trailer record (only appears once, in the last line)
在2,3和4的信息实际上都涉及到一个记录,我需要找到在上传阶段的方式将它们组合成一个。没有标识符明确指定2,3和4的哪些组合彼此相关,但是在所有情况下,它们已经在原始数据中被排序为直接出现在彼此之下。
我需要的是一个预处理步骤,将采取原始数据,然后(作为一个txt文件再次,然后输出)正确的2,3和4线组合成一个记录,像这样:
20110101ABC999JOHN SMITH 198002015000000 1000
20060101DEF999JANE KOTZE 19811001200000 800
我曾想过将bcp转换为SQL(甚至只是使用Access)并将一个自动递增的整数赋值为PK。即:
PK Type Record
1 1 SOMEFILE 20110922
2 2 20110101ABC999
3 3 JOHN SMITH 19800201
4 4 5000000 1000
5 2 20060101DEF999
6 3 JANE KOTZE 19811001
7 4 200000 800
8 5 5200000 1800
,然后做这样的事情:
select
type2.[record]+type3.[record]+type4.[record]
from
(select [record] from uploaded where [type]=2) as type2
join
(select [record] from uploaded where [type]=3) as type3
on type2.PK + 1 = type3.PK
join
(select [record] from uploaded where [type]=4) as type4
on type2.PK + 2 = type4.PK
但是我担心的是,这是完全依赖SQL Server中的顺序分配的PK上的数据出现在模输入文件;我不确定这是否会如此。
有谁知道吗?或者知道一个更好的方法来做到这一点?
感谢
卡尔
我从一个角度接入点讲话。数据是否已存在于Access或文本文件中?如果它在没有主键的Access中,则已经有重大问题。如果它是一些描述的文本文件,则可以使用导入向导导入到Access中,以便分配ID。这将保持顺序。然后,我会倾向于运行一点VBA来整理。 – Fionnuala
将数据提交给我们的文本文件 – Karl
我是一个Access人员,因此对于我来说,导入Access最容易,允许它添加自动编号ID以保留行顺序,然后在整个记录集中运行一些VBA。 – Fionnuala