我們從客戶端接收固定長度的數據集,看起來是這樣的:上傳多行記錄到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