在之前的文章中,我已经介绍了如何使用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中,对于多实体数据文件的导入相关推荐

  1. MS CRM 2011中的新特性(1)——界面部分

    MS crm2011中,在界面部分的调整包括有ribbon.入门窗格.最近访问列表.以及实例的表单方面的调整,下面一一介绍. Ribbon特性 MS CRM2011中,使用了Ribbon作为工作菜单的 ...

  2. MS CRM 2011——让活动实体在活动菜单中显示

    在MS CRM 2011中,新建活动实体时,忘了勾选在菜单显示选项,导致在活动菜单中无法看到此活动实体,如果不想删除此实体重新新建,可以使用以下方法进行修改: 第一步:更改CRM数据库数据库 Meta ...

  3. MS CRM 2011插件调试工具

    在MS CRM 2011中调试插件Plugin是非常繁琐的一件事情--每次编译完成后,需要使用插件注册工具,更新Assembly,而后,将Debug目录中的pdb文件拷贝到%CRM安装目录%\Serv ...

  4. MS CRM 2011 RC中的新特性(9)—全新的工作流 脚本设计模式

    MS Dynamics CRM 2011中,在流程处理方面,除了以往版本中具有的工作流之外,又加入了新的内容--脚本Dialog.脚本Dialog,是同步的.需要用户输入内容的流程.当启动了脚本后,系 ...

  5. MS CRM 2011 RibbonExport Utility下载以及实用说明

    在Microsoft Dynamics CRM 2011中,可以进行Ribbon的自定义开发.在开发Ribbon的过程中,关于CustomAction的Location属性以及Sequence属性都需 ...

  6. MS CRM 2011 RC中的新特性(4)——活动方面之批量编辑、自定义活动

    MS CRM2011中,在活动方面加强的新特性包括有:批量编辑.自定义活动类型以及定期约会. 本文将主要说明前两项,关于定期约会的内容,将在后续文章中进行介绍. 批量编辑活动记录: 在MS crm20 ...

  7. MS CRM 2011 RC中的新特性(2)——销售自动化方面

    在MS CRM2011 RC版本中,销售自动化方面新增的特性主要商机产品部分的对目录外产品的处理. 在以往的版本中,不能够在商机阶段将目录外产品作为商机产品的一个组成部分进行管理,只有到报价单阶段,才 ...

  8. MS CRM 2011 Form与Web Resource在JScript中的相互调用

    原创地址:http://www.cnblogs.com/jfzhu/archive/2013/02/14/2912580.html 转载请注明出处 在Form中可以添加一个html的web resou ...

  9. MS CRM 2011 如何创建基于SQL的自定义报表,并使用数据预筛选(Pre-Filtering)

    原创地址:http://www.cnblogs.com/jfzhu/archive/2012/10/03/2711123.html 转载请注明出处 在本文中我将介绍如何使用Business Intel ...

最新文章

  1. linux下gdb所有实用方法
  2. PCL从0到1|点云滤波之直通滤波与体素法滤波
  3. Spring scope解惑
  4. 【mybatis】IF判断的坑 (实现if test= status == 'zhangsan')
  5. 程序员的创业陷阱:接私活
  6. 17款加速效率的CSS工具
  7. AJAX Accordion:可折叠面板的集合
  8. php下载隐藏,php – 隐藏下载URL
  9. Atitit.md5 实现原理
  10. UTM投影坐标计算距离
  11. 【3dmax千千问】初学3dmax插件神器第15课|打开疯狂模渲大师已归档效果图的模型场景,弹窗提示“无法创建备份文件”报错,室内设计师应该怎么办?
  12. Ubuntu20.04英文系统无法安装中文智能拼音输入法
  13. bmp图片批量转为jpg格式文件?
  14. 在线电子书阅读微信小程序 毕业设计(3)图书列表
  15. 分治算法——Karastsuba算法
  16. [Usaco2008 Mar]The Loathesome Hay Baler麻烦的干草打包机
  17. Qt Central Widget
  18. nexus-基本使用
  19. Ubuntu Conda和pip安装Pytorch失败解决 | pytorch安装网络问题 | pip国内源无效
  20. FPGA学习笔记(四)——串口通信之接收数据(调试过程)

热门文章

  1. 问题 | fatal: open /dev/null or dup failed: No Such file or directory
  2. tiny cc在云服务centos上运行
  3. linux kvm usb设备,KVM usb passthrough配置
  4. HP服务器350g5怎么安装系统,HP ML350 G5服务器安装SCO 5.0.7流程
  5. 记事本java代码_java实现Windows记事本(示例代码)
  6. java自动生成代码框架_DodoFramework- 一个基于代码生成引擎的Java Web系统自动化开发框架...
  7. c++17(24)-枚举与switch
  8. 【Python】Github上125k+Star的Python算法资料
  9. 【面试招聘】算法岗通关宝典 | 社招一年经验,字节5轮、阿里7轮
  10. 【机器学习】模型压缩大杀器!详解高效模型设计的自动机器学习流水线