日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MS CRM 2011中,对于多实体数据文件的导入

發布時間:2025/1/21 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MS CRM 2011中,对于多实体数据文件的导入 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

??? 在之前的文章中,我已經介紹了如何使用MS CRM 2011中提供的數據管理功能完成數據的導入,有興趣的同學可以看《

MS CRM 2011 RC中的新特性(8)—數據管理》進行了解。

??? 在實際應用中,很多時候,我們都面臨著一個數據文件包含多個實體記錄的情況。如果不經加工處理,直接利用“數據導入”功能進行導入,那么,是無法達到我們的目標的。下面是測試過程和結果。

??? 首先,設定數據文件“省份.csv”,該文件中的數據內容如下表所示。

省份名稱負責人城市名稱
廣東廣州
廣東深圳
河北石家莊
河北秦皇島

??? 點擊Ribbon工具條的導入按鈕,啟動“導入數據向導”,在“上載數據文件”頁面設定“數據文件名”為”省份.csv”文件,在“選擇數據映射”頁面中,選擇“默認(自動映射)”作為本次導入的數據映射,如下圖所示

??? 點擊“下一步”按鈕,進入“映射字段”頁面,你會看到在左側的“CRM記錄類型”列表中,只出現了“省份”,而沒有“城市”,那么也就意味著源文件中的城市數據是無法導入進CRM系統的,而且,由于系統在導入時,認為csv文件中每一條數據對應一條省份記錄,所以,系統不會認為記錄中出現了重復,最終的導入結果就是省份多了四條記錄,分別是兩條“廣東”,兩條“河北”,顯然,這是不能夠接受的,那么如何解決這個問題呢?

??? 第一個方法,笨方法——將文件進行分割,然后逐個實體數據的導入。無疑這是非常繁瑣的事情,不過也可以解決問題;

??? 第二個方法,建立數據映射文件,而后在導入時,選擇該數據映射為當前導入所使用的映射。從而可以幫助系統識別出數據文件中包含的所有實體類型。下面是具體的步驟。

??? 首先,創建數據映射,點擊“設置”—> “數據管理”-->“數據映射”,系統將會顯示數據映射列表。很不幸的,截至我現在使用MS CRM 2011 RTM版本,還沒有開放數據映射的創建入口,在Grid上方的工具條中沒有“新建”這個按鈕,只有“導入”按鈕。如下圖所示。

??? 沒有辦法,只好手動創建一個數據映射文件,而后導入到系統中了。

??? 創建數據映射文件的步驟如下:

??? 打開Visual Studio 2010,點擊“文件”> “新建”>“文件”,在彈出的模板分類中選擇“常規”,在右側的模板列表中選擇“XML文件”,如下圖所示。

??? 點擊“打開”按鈕,返回編輯界面。xml文件創建好了,那么映射文件的架構內容在哪里呢?經過作者一番查找,原來位于crm站點的_resources文件夾下,該架構文件的名稱為“ImportMapSchema.xsd”。好,下面借助這個架構文件,可以了解數據映射文件中到底有哪些內容,以指導我們編寫映射文件。

??? 通過分析架構文件,可以得出映射文件的大致結構是這樣子的:

<Map Name="映射文件的名稱">
? <EntitiesPerFile>數據文件是否包含多個實體數據</EntitiesPerFile>
? <Description>描述文字</Description>
? <EntityMaps>
??? <EntityMap TargetEntityName="CRM系統中的實體架構名稱" SourceEntityName="顯示在導入向導‘映射字段’頁面左側CRM記錄類型列表中的名稱" Dedupe="進行重復檢測時的處理方式">

?????? <AttributeMaps><AttributeMap>…</AttributeMap></AttributeMaps>

??? </EntityMap>
? </EntityMaps>

</Map>

其中,

  • Name="映射文件的名稱",代表了該映射的顯示名稱,那么無論是在數據映射列表還是導入向導的“選擇數據映射”頁面中,都會以該設定值顯示此數據映射;
  • <EntitiesPerFile>數據文件是否包含多個實體數據</EntitiesPerFile>,在架構文件中,對該屬性的描述為

<xs:simpleType name="EntitiesPerFileEnum">
? <xs:restriction base="xs:string">
??? <xs:enumeration value="Single" />
??? <xs:enumeration value="Multiple" />
? </xs:restriction>
</xs:simpleType>

也就是說,一個數據文件中,每行可以只包含一個實體的數據,也可以包含多個實體的數據。使用Multiple值標明當前數據文件包含了多個實體的數據;

  • <Description>描述文字</Description>,描述文字,不多說了;
  • TargetEntityName="CRM系統中的實體架構名稱",當前文件中數據所對應的CRM系統中的實體名稱,如果有多個實體,那么就需要創建多個<EntityMap>節點;
  • SourceEntityName="顯示在導入向導‘映射字段’頁面左側CRM記錄類型列表中的名稱",一個能夠準確反映文件中數據的名稱;
  • Dedupe="進行重復檢測時的處理方式",該屬性的定義如下:

<xs:simpleType name="DedupeEnum">
? <xs:restriction base="xs:string">
??? <xs:enumeration value="Ignore" />
??? <xs:enumeration value="Eliminate" />
? </xs:restriction>
</xs:simpleType>

??? 從定義中可見,如果檢測到了重復性數據,可以使用的操作包括有忽略Ignore,以及清除Eliminate。

??? 在單實體數據文件中,一般而言都是選擇清除。那么對于多實體數據文件,如何處理呢,很明顯,多實體數據文件中,很大的可能是主實體數據會出現重復,這一點很容易理解,我不多說了。

??? 而子實體數據出現的重復,可能未必是真正的重復,為什么這么說呢,因為子實體是依附于主實體的,舉例來說,北京市有朝陽,而遼寧省也有朝陽,顯然,這兩個地方并非重復記錄,而是兩條不同的記錄,所以,對于子實體不能夠使用清除Eliminate。

??? 對于AttributeMaps節點以及其下的子節點,是為了導入向導的映射字段時使用的,若此時不進行設置,在向導的字段映射界面,也可以進行設置,為了簡單起見,我就不設置了。

??? ok,通過上面的分析、研究,最后形成的映射文件的內容如下:

<Map Name="針對省份以及城市的數據映射">
? <EntitiesPerFile>Multiple</EntitiesPerFile>
? <Description>我做的一個樣例以及測試</Description>
? <EntityMaps>
??? <EntityMap TargetEntityName="new_city" SourceEntityName="城市" Dedupe="Ignore">

??? </EntityMap>
??? <EntityMap TargetEntityName="new_province" SourceEntityName="省份" Dedupe="Eliminate">

??? </EntityMap>
? </EntityMaps>

</Map>

??? 將該文件保存為“針對省份以及城市的數據映射.xml”。

??? 點擊“數據映射”列表工具條中的導入按鈕,導入該映射文件。如下圖所示。

??? 接下來,點擊Ribbon工具條的“導入數據”按鈕,導入“省份.csv”文件,在“選擇數據映射”頁面,可以看到最下方,我們剛剛導入的數據映射已經赫然在列了。如下圖所示。

??? 點選該映射,點擊“下一步”,進入“映射字段”頁面。此時,左側的CRM記錄類型列表中,不再是“省份”一條記錄,而是“省份”、“城市”兩條記錄了。如下圖所示。

??? 設定“城市”的映射字段,如下圖所示。

??? 設定“省份”的映射字段,如下圖所示。

??? 一路“下一步”下去,直至提交。

??? 轉到“工作區”-->“導入”,查看導入結果。

總結

以上是生活随笔為你收集整理的MS CRM 2011中,对于多实体数据文件的导入的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。