★从Shopex转移数据(会员)到Magento



★完整版配置文件: 运行这个可爱的雷人SQL语句,请确保手工指定分隔符为“$$”——在Phpmyadmin中,手工在SQL窗口中指定,在其他程序或者Mysql命令行时,用delimiter $$




/*

功能:实现把顾客登录信息从Shopex导入到Magento,数据迁移。完整版将判断地址、姓名、邮编等信息的有效性与否,如果无效,则从Shopex 的送货地址中提取,并尝试把导入多地址到Magento——因为Shopex 4.3和Magento 1.3都支持多地址
版本: V0.0,完整版
环境: Shopex 4.3 && Magento 1.3.2.3
作者:
弟兄小方·Magento官方网站中文翻译协调员·北京守望电影小组 完成
开发日期: 2009年8月28日
联系方式:
lanshunfang##gmail.com ##换为@
版权: 转载请包含此注释,并注明出处;


金句:

【林前13:4】 爱是恒久忍耐,又有恩慈。爱是不嫉妒。爱是不自夸。不张狂。
【林前13:5】 不作害羞的事。不求自己的益处。不轻易发怒。不计算人的恶。
【林前13:6】 不喜欢不义。只喜欢真理。
【林前13:7】 凡事包容。凡事相信。凡事盼望。凡事忍耐。
【林前13:8】 爱是永不止息。先知讲道之能,终必归于无有。说方言之能,终必停止, 知识也终必归于无有

*/


/*
请确保手工指定分隔符为“ $$——在Phpmyadmin中,手工在SQL窗口中相应位置填写,在其他程序或者Mysql命令行时,用delimiter $$ */




DROP FUNCTION IF EXISTS `if_null`$$

CREATE FUNCTION `if_null` (m VARCHAR(200), n VARCHAR(200)) RETURNS VARCHAR(200)
BEGIN

RETURN IFNULL(m,n);


END $$


/*这个存储函数用来返回非空值,下面将多次调用。在Shopex中,很多人是没有填联系方式的,所以处理方式是:如果他们的联系方式中的相关字段是空值,则我们直接从他们的邮寄地址方式中获取相关的值*/













DROP TABLE IF EXISTS `tmp_name_addr_tel_mobile` $$
CREATE TEMPORARY TABLE `tmp_name_addr_tel_mobile`
(
SELECT *,COUNT(DISTINCT `member_id`)
FROM `bdb_member_addrs` AS `d`
WHERE `d`.`name` <> ""
AND `d`.`addr` <> ""
GROUP BY `d`.`member_id`
ORDER BY `d`.`tel` DESC, `d`.`mobile` DESC
) $$
/*产生顾客地址新表,过滤无地址、无姓名的记录,合并相同的member_id,针对特定的用户,我只要一个有效地址就行了*/



DROP TABLE IF exists `ShopexToMagento_Customer` $$

CREATE TABLE `ShopexToMagento_Customer` (


SELECT
"baojiayin" AS `website`, /*导入的顾客信息入指定的网站*/

/* 产生电子邮件 */
CASE
WHEN (`a`.`email`REGEXP '^kefu@baojiayin.com') = "1"
THEN CONCAT(`a`.`uname`,"@baojiayin.com")/*如果Email是我们的客户Email,即kefu@baojiayin.com ,则视之为顾客没有邮箱,则使用用户名@baojiayin.com的方式作为登录名*/
WHEN `a`.`email` <> ""
THEN `a`.`email`/*顾客有邮箱,且不是kefu@baojiayin.com 的直接使用邮箱*/

ELSE CONCAT(`a`.`uname`,"@baojiayin.com")/*顾客没有邮箱的,则使用用户名@baojiayin.com的方式作为登录名 */
END
AS `email`,
/*电子邮件:如果顾客邮件不为空,则直接使用邮件,如果顾客邮件为空,则直接在其用户名后面加上@baojiayin.com作为登录名*/


"General" AS `group_id`, /*顾客所在组,直接指定为General,如果你们有批发组或者代理组,自行根据Shopex相应字段来产生*/
"" AS
`prefix`, /*前缀,美国人用前缀来表示称呼,如果Mr或者President*/

/* 产生顾客称谓(先生、女士) */
CASE
WHEN
`a`.`sex` = "0" THEN "女士"
WHEN `a`.`sex` = "1" THEN "先生"
ELSE ""
END
AS `suffix
`, /*后缀,美国人用后缀不是很多,如William II 或者Bush senior(老布什,有的美国家庭三代同堂,且同名!这个很雷。他们用后缀来区别是父亲还是孩子还是爷爷),咱们中国人就用后缀来表示先生、女士了*/

/* 产生顾客姓名 */


if_null (
`a`.`name`, `t1`.`name` )
AS `firstname`,/**/


"." AS `lastname`, /*弄个小点,不过要留着,免得Magento程序生你的气*/
`a`.`password` AS `password_hash`, /*经测试发现,Shopex的密码加密串采用标准MD5,Magento的密码加密串采用标准MD5+":"+"两个随机字母",所以二者可以兼容*/


"" AS `billing_prefix`, /*空的,留着*/

/* 产生顾客账单姓名 */

if_null ( `a`.`name`, `t1`.`name` )
AS `billing_firstname`,/**/

"." AS `billing_lastname`, /*这个上面注释过了*/

/* 产生顾客账单地址 */

if_null ( `a`.` addr `, `t1`.` addr ` )
AS `billing_street_full`,


`a`.`city` AS `billing_city`, /*账单寄往的城市,这个需要小心!因为要成功的把Shopex中的中国城市导入Magento,您需要首先导入中国的城市名称到数据库,要不没有办法匹配,怎么导?可以给我发电子邮件,小方PM给你*/


`a`.`province` AS `billing_region`, /*省份,Shopex挺混淆的,其值和城市一样,推测可能是数据库设计者留给将来版本的*/
"CN" AS `billing_country`, /*账单寄往的国家,这些都设为中国了,诸位按照自己的情况设定*/


/* 产生顾客账单邮编 */

if_null ( `a`.` zip `, `t1`.` zip ` )
AS `billing_postcode`,


/* 产生顾客账单电话 */

if_null ( `a`.` tel `, `t1`.` tel ` )
AS `billing_telephone`,


/* 产生顾客账单手机号 */

if_null ( `a`.` mobile `, `t1`.` mobile ` )
AS `billing_fax`,/*Shopex中的手机可是重要的信息,但Magento中没有地方放,所以放这了,本来这个字段是被Magento当传真用的。别忘了相应修改前台模板和后台模板*/



/* 产生顾客邮寄姓名 */

if_null ( `a`.` name `, `t1`.` name ` )
AS `shipping_firstname`,/*邮寄地址和账单地址一样,具体的字段说明参考上面的账单部分。下同*/


"." AS `shipping_lastname`, /*同上*/


/* 产生顾客邮寄地址 */

if_null ( `a`.` addr `, `t1`.` addr ` )
AS `shipping_street_full`,

`a`.`city` AS `shipping_city`, /*同上*/
`a`.`province` AS `shipping_region`, /*同上*/
"CN" AS `shipping_country`, /*同上*/


/* 产生顾客邮寄邮编 */

if_null ( `a`.` zip `, `t1`.` zip ` )
AS `shipping_postcode`,


/* 产生顾客邮寄电话 */

if_null ( `a`.` tel `, `t1`.` tel ` )
AS `shipping_telephone`,



"" AS `shipping_company`, /* 同上 */

/* 产生顾客邮寄手机号 */

if_null ( `a`.` mobile `, `t1`.` mobile ` )
AS `shipping_fax`,/*Shopex中的手机可是重要的信息,但Magento中没有地方放,所以放这了,本来这个字段是被Magento当传真用的。别忘了相应修改前台模板和后台模板*/


"cs_chinese_storeview" AS `created_in`/* 会员是从哪里创建的,这个需要根据您自己的情况而定了,前面的代号是Store View的Code,需要你自己到Magento后台查 */



FROM `bdb_members` AS `a` LEFT JOIN `tmp_name_addr_tel_mobile` AS `t1` ON `a`.`member_id` = `t1`.`member_id`


)
$$


SELECT * FROM `ShopexToMagento_Customer`

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值