企业IM服务的方案选择(四)、自动导入组织结构与用户数据

1010阅读 0评论2011-08-02 高傲的活着
分类:

4,导入数据

这里是用MySQL Front操作的,MySQL Frontaccess支持比较好,原始数据是保存在access数据库中,当然xls也可以,我这里是用MySQL Frontaccess的数据导入到MySQLtempmember表,然后再用SQL语句来操作。

【注意】确保几个数据表必须是gbk等字符集,否则汉字插入提示错误。

() 部门映射到组(完全公开组)

--导入组

Insert into ofgroup(groupName,description) Select  distinct 部门,部门 from tempmember

 

--导入组属性,这里都是完全公开组

Insert into ofgroupprop(groupname,name,propvalue)

Select  distinct 部门,'sharedRoster.displayName', 部门 from tempmember

Insert into ofgroupprop(groupname,name,propvalue)

Select  distinct  部门,'sharedRoster.groupList', ''  from tempmember

Insert into ofgroupprop(groupname,name,propvalue)

Select  distinct  部门 ,'sharedRoster.showInRoster', 'everybody' from tempmember

 

(),导入用户信息

insert into ofuser(username, plainPassword,name,email,creationDate,modificationDate)

Select 新邮箱,密码,姓名,新邮件地址, UNIX_TIMESTAMP(), UNIX_TIMESTAMP() from tempmember

 

【注】Openfire加密的处理

Openfire采用的是Blowfish 算法:

http://www.igniterealtime.org/builds/openfire/docs/latest/documentation/javadoc/org/jivesoftware/openfire/auth/AuthFactory.html#encryptPassword(java.lang.String)

后来发现xml导入导出插件可利用,可以先导出一份密码不对的xml,然后写个文本处理把密码部分更新一下。这个也要写点代码,幸亏看到下面的文章():

encryptedPassword字段存储的就是管理员的密码,导入的用户,如果还没有登录过,密码都是明文存储在plainPassword字段的,登录过一次之后,plainPassword字段的密码被清空了,只留下了加密的密码。

利用这个特性,我们可以把encryptedPassword字段设置成NULL,然后给plainPassword字段重新设置明文密码!

 

(),导入用户组信息

insert into ofgroupuser(groupName,username,administrator)

select 部门, 邮箱, (CASE 管理员 WHEN 1 THEN 1 else 0  END ) from  tempmember

上一篇:企业IM服务的方案选择(三)、Openfire数据库中用户组织架构相关的数据表格式分析
下一篇:人事部面试常问的19个问题 和一些面试经典问题