溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

基于radius的Mysql計(jì)費(fèi)系統(tǒng)數(shù)據(jù)遷移

發(fā)布時(shí)間:2020-07-20 20:38:09 來源:網(wǎng)絡(luò) 閱讀:785 作者:weiweiyong_2013 欄目:數(shù)據(jù)庫

radius計(jì)費(fèi)系統(tǒng)向藍(lán)海計(jì)費(fèi)系統(tǒng)數(shù)據(jù)遷移技術(shù)總結(jié)

本文僅供參考,在實(shí)際環(huán)境中測試成功。歡迎大家提出問題。

1.    首先要有一個(gè)清晰的思路和明確的目標(biāo)。

本次計(jì)費(fèi)遷移主要將老計(jì)費(fèi)radius management系統(tǒng)的用戶,遷移到藍(lán)海計(jì)費(fèi)系統(tǒng)。由于老計(jì)費(fèi)系統(tǒng)和藍(lán)海計(jì)費(fèi)有相似性、同時(shí)具有一定的差異性。所以要修正老計(jì)費(fèi)系統(tǒng)數(shù)據(jù)格式符合藍(lán)海計(jì)費(fèi)的要求(藍(lán)海計(jì)費(fèi)已經(jīng)提供了數(shù)據(jù)導(dǎo)入的標(biāo)準(zhǔn)格式)。這樣才能將老計(jì)費(fèi)平安的導(dǎo)入藍(lán)海系統(tǒng),順利進(jìn)行計(jì)費(fèi)系統(tǒng)遷移。

2.    準(zhǔn)備工作

2-1首先要收集新老計(jì)費(fèi)系統(tǒng)的數(shù)據(jù)格式和數(shù)據(jù)庫的相關(guān)權(quán)限。

2-2收集需要遷移的需求,本次遷移并不是將所有的用戶遷移到藍(lán)海系統(tǒng)。根據(jù)公司營長的需要按要求將數(shù)據(jù)導(dǎo)出老系統(tǒng)、再導(dǎo)入新系統(tǒng)。

2-3為了保證計(jì)費(fèi)系統(tǒng)的安全性,需要將老系統(tǒng)的數(shù)據(jù)庫備份到測試環(huán)境進(jìn)行測試。同時(shí)要做好數(shù)據(jù)庫的導(dǎo)出時(shí)間點(diǎn)。

2-4先做部分?jǐn)?shù)據(jù)的產(chǎn)品導(dǎo)入。觀測導(dǎo)入效果后再研究后續(xù)的工作。

2-5由于數(shù)據(jù)導(dǎo)入藍(lán)海計(jì)費(fèi)系統(tǒng),在后期的運(yùn)營中也要進(jìn)行數(shù)據(jù)檢測。

2-6收集新舊系統(tǒng)的相關(guān)數(shù)據(jù),本次主要收集數(shù)據(jù)的套餐信息、資費(fèi)信息。

3風(fēng)險(xiǎn)

3-1本次數(shù)據(jù)遷移,如果失敗會(huì)導(dǎo)致所有遷移用戶不能正確使用網(wǎng)絡(luò)。藍(lán)海系統(tǒng)手動(dòng)錄入的用戶不受影響。為了本次遷移的順利完成,通過和營帳進(jìn)行商議。先將某一個(gè)很小的小區(qū)的10個(gè)用戶進(jìn)行遷移,做好隨時(shí)恢復(fù)的準(zhǔn)備,根據(jù)用戶反映做出有效處理。

3-2在數(shù)據(jù)遷移完成后的一段時(shí)間內(nèi),暫定1個(gè)月或者更長時(shí)間任何人不得刪除老計(jì)費(fèi)的數(shù)據(jù)并保證老計(jì)費(fèi)一直處于運(yùn)行狀態(tài)。

3-3如果遷移失敗,會(huì)導(dǎo)致所有涉及遷移的用戶不能正常撥號(hào)。故必須做好計(jì)費(fèi)恢復(fù)、割接事前通知、事中做好客服的安撫工作。

3-4遷移時(shí)間盡量選擇在用戶上網(wǎng)人數(shù)較少的時(shí)間段。

4時(shí)間

4-1本次遷移按照公司安排,在測試遷移成功的基礎(chǔ)上進(jìn)行數(shù)據(jù)的一次性遷移。計(jì)劃耗時(shí)10個(gè)小時(shí),盡可能將時(shí)間壓縮到最小。

5資源調(diào)度

5-1本次遷移需要技術(shù)部研發(fā)部相關(guān)人員參加、計(jì)費(fèi)營帳資深管理員、網(wǎng)絡(luò)割接部門的同事、網(wǎng)管部門同事、客服同事做好通知和解釋工作,有效防止網(wǎng)絡(luò)中斷。

6.實(shí)施步驟

6-1putty通過ssh連接到老計(jì)費(fèi)的linux系統(tǒng)上,

6-2用獲得的數(shù)據(jù)庫帳號(hào)執(zhí)行數(shù)據(jù)庫備份操作,命令如下:

   Mysqldump –h227.0.0.1 –uroot –pxxxx radius>radius_201512310800.sql;

6-3在搭建的測試數(shù)據(jù)庫環(huán)境執(zhí)行如下數(shù)據(jù)庫還原操作。

   Create database radius;

   Mysql –h227.0.0.1 –uroot –p***** radius<radius_201512310800.sql;

6-4新建一個(gè)業(yè)務(wù)表格,將營帳給的最新資費(fèi)套餐導(dǎo)入此表。Xls格式的導(dǎo)入不再詳述。

/*createtable srvname

(

idint primary key auto_increment,

srvidint(11),

srvnamevarchar(50)

)

 

 

SELECT* FROM srvname

 

 

altertable srvname add column srvname2 varchar(50)

altertable srvname add column srvid_old int(11)

xls數(shù)據(jù)導(dǎo)入到srvname表中

 

6-5將新舊業(yè)務(wù)套餐和資費(fèi)進(jìn)行轉(zhuǎn)換并生成臨時(shí)表

#測試將舊業(yè)務(wù)碼轉(zhuǎn)換為新業(yè)務(wù)碼

 

SELECT* FROM  rm_services

 

 

 

SELECTid

FROM(SELECT * FROM srvname WHERE srvname NOT LIKE '%%'  ) AS t_srv_flage

WHERESUBSTRING(srvname,LOCATE('~',srvname)+1,1) IN ('1','z')

 

#設(shè)置flag,剔除年的業(yè)務(wù)代碼和008 3 3 6月的業(yè)務(wù)代碼

UPDATEsrvname SET flag=SUBSTRING(srvname,LOCATE('~',srvname)+1,1)

WHERE

idIN (

SELECTid

FROM(SELECT * FROM srvname WHERE srvname NOT LIKE '%%'  ) AS t_srv_flage

WHERESUBSTRING(srvname,LOCATE('~',srvname)+1,1) IN ('1','z'))

 

ALTERTABLE srvname ADD COLUMN flag CHAR(1)

 

SELECT* FROM srvname WHERE flag IS NOT NULL

 

6-6將新舊計(jì)費(fèi)對(duì)接成功的數(shù)據(jù)寫入臨時(shí)表srvname_temp

CREATETEMPORARY TABLE srvname_temp

AS

 

SELECT 

a.srvidAS srvid_new,a.srvname AS srvname_new,a.srvid_old AS srvname_abc,

b.srvidAS srvid_old,b.srvname AS srvname_old,

a.flag

FROMsrvname AS a

LEFTJOIN

rm_servicesAS b

ONa.srvname_old=b.srvname

WHEREa.flag IS NOT NULL

 

SELECT* FROM srvname_temp

 

6-7從測試環(huán)境的radius庫將數(shù)據(jù)按條件查詢出來并導(dǎo)出為csv格式的數(shù)據(jù)。編碼格式選擇GBk2312

 

#導(dǎo)入藍(lán)海計(jì)費(fèi)的最終數(shù)據(jù)。

 

/*總結(jié):

FIELDSTERMINATED BY ',' 字段間分割符

OPTIONALLYENCLOSED BY '"' 將字段包圍對(duì)數(shù)值型無效

LINESTERMINATED BY '\n' 換行符*/

 

/*1queries executed, 0 success, 1 errors, 0 warnings

 

查詢:select u. username, k.value AS 明文密碼,u.password as 密文密碼, u.srvid as old_srvid, t.srvid_newas new_srvid, t.srvid...

 

錯(cuò)誤代碼: 1064

Youhave an error in your SQL syntax; check the manual that corresponds to yourMySQL server version for the right syntax to use near 'select * from radcheck

 

select* from rm_users

leftjoin rm_services as s

on'at line 22

 

執(zhí)行耗時(shí)  : 0 sec

傳送時(shí)間  : 0 sec

總耗時(shí)      : 0.002 sec

 

grantfile on *.* to zwfayf@'%';

flushprivileges;

mysql服務(wù)器沒有d盤導(dǎo)致

*/

/*

Excel顯示數(shù)字時(shí),如果數(shù)字大于12位,它會(huì)自動(dòng)轉(zhuǎn)化為科學(xué)計(jì)數(shù)法;如果數(shù)字大于15位,它不僅用于科學(xué)技術(shù)費(fèi)表示,還會(huì)只保留高15位,其他位都變0。

Excel打開csv文件時(shí),只要字段值都是數(shù)字,它就認(rèn)為該字段類型是數(shù)值。但我們存放在數(shù)據(jù)庫中的純數(shù)字char有可能會(huì)超過15位,這樣導(dǎo)出csv文件后,用excel打開看到的字段值就不對(duì)了。

網(wǎng)上的解決方法

1、將單元格格式設(shè)為文本,但行不通,還是會(huì)以科學(xué)計(jì)數(shù)法顯示

2、將單元格格式設(shè)為特殊,類型郵政編碼,這樣不會(huì)以科學(xué)計(jì)數(shù)法顯示,但是數(shù)字超過15位時(shí)低位還是會(huì)變0;

3、新建一個(gè)新工作表,用數(shù)據(jù)導(dǎo)入自文本文件功能,將csv導(dǎo)入到工作表中(分隔符逗號(hào),每一列格式都設(shè)為文本),這樣可以正確顯示,但是每次導(dǎo)出新csv文件都要這么做比較麻煩,而且我們也不可能讓客戶去進(jìn)行這個(gè)操作。

 

參考這篇文章 java導(dǎo)出csvexcel打開后數(shù)字不用科學(xué)計(jì)數(shù)法顯示

我在mysql導(dǎo)出csv文件時(shí),設(shè)置字段值用制表符\t括起來(outfile 'e:\\test.csv'fields terminated by ',' optionally enclosed by '\t' lines terminated by '\r\n'),

這樣excel打開csv文件時(shí),會(huì)將數(shù)值用文本格式顯示,而不是數(shù)值格式,因?yàn)槲覀兊臄?shù)值前后都有制表符\t,而不是單純的數(shù)字。

這樣打開導(dǎo)出的csv文件就可以正常顯示了。不建議這樣使用*/

 

 

SELECT

u.username AS '賬號(hào)',

k.valueAS '密碼',

IF(u.`firstname`!='',u.`firstname`,'測試')AS '姓名',

IF(u.`taxid`,u.`taxid`,'610000000000000000')AS '證件號(hào)碼', //處理×××號(hào)碼為空的字段

IF(u.mobile,u.mobile,'13000000000')AS '手機(jī)號(hào)碼', //處理手機(jī)號(hào)碼為空的字段

 

IF(u.`address`!='',u.`address`,'xxx')AS'聯(lián)系地址', //處理地址為空的字段

 

''AS '賬號(hào)余額',

u.`staticip`AS 'ip地址',

u.`createdon`AS '開始時(shí)間',

u.`expiration`AS '結(jié)束時(shí)間',

 

 

#if(SUBSTRING(u.`address`,1,2) IN ('小區(qū)或社區(qū)名稱'),'17','18') as '區(qū)域編號(hào)', //處理地址自動(dòng)化分行政區(qū)域的字段,并自動(dòng)按規(guī)范設(shè)置區(qū)域編號(hào) 17 18為區(qū)域編號(hào),可以根據(jù)相關(guān)規(guī)范進(jìn)行設(shè)定。

 

 

 

'陜西省xxxx區(qū)' AS '區(qū)域名稱',

'1'AS '運(yùn)營商編號(hào)',

'本地'AS '運(yùn)營商名稱',

'5'AS '項(xiàng)目編號(hào)',

 

'BRAS'AS'項(xiàng)目名稱', //計(jì)費(fèi)類型

t.srvid_newAS '產(chǎn)品編號(hào)',

t.srvname_newAS  '產(chǎn)品名稱',

u.`createdby`AS '開戶人員',

''AS'用戶備注1',

 

''AS'地址池名稱',

REPLACE(u.`comment`,'\\','') AS '用戶備注',

''AS'發(fā)票號(hào)',

''AS'固話號(hào)碼',

''AS'操作人員',

 

''AS'用戶屬性'

 

#INTOOUTFILE 'e://lanhai.csv'  //設(shè)置導(dǎo)出的文件名

#FIELDSTERMINATED BY ',' //設(shè)置導(dǎo)出數(shù)據(jù)以逗號(hào)分割字段

#OPTIONALLYENCLOSED BY '"' //設(shè)置字段以””進(jìn)行包裹

#LINESTERMINATED BY '\n'  //設(shè)置行結(jié)束符為換行符\n

 

FROMrm_users AS u

LEFTJOIN radcheck AS k

ONu.username=k.username

LEFTJOIN srvname_temp AS t

ONu.`srvid`=t.srvid_old

WHEREk.`value` <>1

ANDSUBSTRING(u.username,1,9)='029010000'

ANDu.`address`  LIKE '文景%'

AND  u.`expiration`>'2015-05-31'

 

 

6-8將導(dǎo)出的csv在藍(lán)海計(jì)費(fèi)里面通過數(shù)據(jù)庫管理下的數(shù)據(jù)導(dǎo)入功能將數(shù)據(jù)導(dǎo)入。注意導(dǎo)入的過程中藍(lán)海計(jì)費(fèi)的提示信息。如果發(fā)現(xiàn)錯(cuò)誤,請(qǐng)認(rèn)真進(jìn)行分析。

6-9由于數(shù)據(jù)涉及到公司的機(jī)密,故再次就不一一附圖。

 

本文至此結(jié)束。



向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI