show create table user_PRofile_252;CREATE TABLE `user_profile_252` ( `uid` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '用戶ID', `nickname` varchar(45) CHARACTER SET utf8 NOT NULL COMMENT '用戶昵稱,全局唯一', `avatar` varchar(500) CHARACTER SET utf8 NOT NULL COMMENT '用戶頭像地址', `signature` varchar(255) CHARACTER SET utf8 NOT NULL COMMENT '用戶簽名信息', `gender` varchar(20) CHARACTER SET utf8 NOT NULL COMMENT '用戶性別,三個枚舉值"male","female","unknown"', `type` tinyint(4) NOT NULL COMMENT '用戶類型:1->注冊用戶,2->游客', `source` int(11) NOT NULL COMMENT '用戶來源:1->新浪,2->QQ', `phone_num_verified` tinyint(4) NOT NULL DEFAULT '-1' COMMENT '用戶手機認證狀態:-1->未認證,0->已認證', `id_card_verified` tinyint(4) NOT NULL DEFAULT '-1' COMMENT '用戶身份證認證狀態:-1->未認證,0->已認證', `state` tinyint(4) NOT NULL COMMENT '用戶狀態,0->正常用戶,-1->黑名單用戶', `last_login_time` datetime NOT NULL COMMENT '用戶最后一次登錄時間', `created_time` datetime NOT NULL COMMENT '用戶注冊時間', `updated_time` datetime NOT NULL COMMENT '用戶信息更新時間', PRIMARY KEY (`uid`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用戶信息表';show create table bi_find_nickname_from_uid;CREATE TABLE `bi_find_nickname_from_uid` ( `uid` varchar(100) DEFAULT NULL, `nickname` varchar(200) DEFAULT NULL, `etl_time` datetime DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8;其中,源表是多個分表:其分表后綴是以Uid模256所得結果命名。2、執行根據Uid查找用戶昵稱的代碼實際上,是將查找的結果,放在目標數據庫表里。/Users/nisj/PycharmProjects/BiDataProc/UserPortrait/findDataFromModSubmeter.py# -*- coding=utf-8 -*-import os,re,timedef find_nickname_from_uid(uid): tab_tail = uid%256 nickname_uid_data = os.popen("""/usr/bin/MySQL -hsourceip -P50514 -usourceUser -psourcePass --default-character-set=utf8 -N -e "set names utf8; / use jellyfish_user; / select uid,nickname from user_profile_%s where uid='%s'; / " """ % (tab_tail, uid)).readlines(); msd_list = [] for ms_list in nickname_uid_data: ms = re.split('/t', ms_list.replace('/n', '')) msd_list.append(ms) for msd in msd_list: uid = msd[0] nickname = msd[1] etl_time = time.strftime('%Y-%m-%d %X', time.localtime()) # print "{0}/t{1}".format(uid, nickname) os.system("""/usr/bin/mysql -htargetIp -P6603 -utargetUser -ptargetPass --default-character-set=utf8 -e "set names utf8; / use funnyai_data; / insert into bi_find_nickname_from_uid(uid, nickname, etl_time) / select '%s','%s','%s'; / " """ % (uid, nickname, etl_time))list_uid = [200063,200067,200111,1209195139,1209195288,1209393002,1209450272]# 清空目標表數據os.system("""/usr/bin/mysql -htargetIp -P6603 -utargetUser -ptargetPass --default-character-set=utf8 -e "set names utf8; / use funnyai_data; / truncate table bi_find_nickname_from_uid; / " """)for uid in list_uid: print uid find_nickname_from_uid(uid)3、說明在處理的過程中,碰到數據傳輸過程中的亂碼問題;通過數據導出與導入過程中加入“--default-character-set=utf8”和“set names utf8;”解決。
新聞熱點
疑難解答