2013-03-28 65 views
0

我使用SharePoint列表適配器從CodePlex上SSIS Adapter我的SharePoint列表項轉移到SQL Server 2008中的人/組選取器外地趕來與垃圾字符像數據發佈到SQL

10 ; #Mark,布朗 4; #Samantha,布朗 100; #Tim,科林斯

如果現場有多人,它顯示了這樣的: 7; #Sigmon,羅素;#18;# Colby,Fox;#23; #Rina,Meyer

我想象解決這個問題的兩種方法。

1)找出問題的根源並糾正來源: 在此選項中,我知道這些編號是從不是隨機的,而是的SharePoint分配的ID給每個人,;#是在separators.Can任何建議如何擺脫這些#和#;在使用上面的Codeplex鏈接創建的包中?有沒有其他方法可以從SharePoint列表本身解決這個問題?或套餐(SSIS)?

2)糾正它在SQL: 可能是創建一個存儲過程/函數來去掉這些字符,只是有逗號分隔乾淨的名字呢?任何人都可以告訴我如何?

請讓我知道您的想法。謝謝。

回答

0

我有一個SSIS包也應用相同的SharePoint適配器來從多個SharePoint列表位置發佈的多個文檔中獲取信息。我遇到了類似的問題,並通過應用SQL來應用您正在考慮的第二種方法。首先將SharePoint記錄拖入臨時臨時數據庫表中,在該臨時臨時臨時數據庫表中應用幾條SQL UPDATE語句來清理數據,包括刪除隨機#字符。之後,記錄被標準化爲最終的目的地表格。在你的情況下,你可能需要應用SQL解析值(使用「#」),並可能應用遊標以將每個名稱放入單個記錄中......如果這是最終的意圖。

希望這會有所幫助。如果您有任何問題,請告訴我。

謝謝。

+0

嗨Kosh,感謝您的I/P。最初我也認爲是相同的,但發現更有效的解決方案 - SQL CLR。如果您可以編寫SQL CLR函數並將該函數部署到SQL Server,則可以將所需的列傳遞給解析數據的函數,並在簡單的SELECT查詢中提供您想要的內容。我這樣做了。我試着按照你說的方式做,但感到沮喪。 – Nemo

0

做這種方式...

子([創建者],CHARINDEX( '#',[創建者])+ 1,LEN([創建者]) - CHARINDEX( '#', [創建者]))作爲[創建者]