pbwin会員合併

3072 ワード

このブログはすでに不安定な独立ブログに移行しました.www.pubwin 2009.net接続:http://www.pubwin2009.net/index.php/post/15.html私達は過程を言います.(ここでは、二つのネットカフェのサービス番号は基本的に一致しています.そして操作時にpbwinサービスを停止して、sqlserverサービスをオープンします.私達は参加するネットを新しいネットカフェと呼びます.)
 
1,バックアップ、必ずデータベースをバックアップします.
2,ウガ新ネットカフェデータベースは、追加する新しいネットカフェのデータベースがc:edbに置かれている場合、t-sqlコマンドは以下の通りです.
sp_attach_db @dbname = N'newdb', 

    @filename1 = N'C:
ewdb\local_data.mdf', @filename2 = N'C:
ewdb\local_log.ldf'
 3,新しいネットカフェと古いネットカフェの会員数と会員数はそれぞれいくらですか?
select count(*),sum(balance/100) from mem_localmemberbaseinfo

 二つのデータベースを切り替えて、統計してみます.ここの二つの試験データベースの統計は以下の通りです.現在ネットカフェの会員数:3727    金額:25793参加するネットカフェの会員数:13004    金額:69346
4,私たちはネットカフェの新しい倉庫に加入する会員表を現在のデータベースの新しい表に導入します.
select * into local.dbo.member from newdb.dbo.mem_localmemberbaseinfo

5,今確認してみます.現在のメンバー数は先ほどの会員数と同じですか?データの導入を確認します.
select count(*),sum(balance/100) from member

 こちらで調べた数字は先ほど調べた新しいネットカフェと同じです.
6,今私達が添付したnewdbデータベースは役に立ちません.直接彼を分離しました.
 sp_detach_db @dbname=N'newdb'

 7,私達は調べにきて、私達の新しいネットカフェの会員の表裏は私達の今の会員の表裏と重複する会員がありますか?
select uniqueid from member where uniqueid in

(select uniqueid from mem_localmemberbaseinfo)

 こちらはテストデータベースですので、3670件の重複を検出します.たくさんあります.
8,これらの重複した会員に対して、初めてのバックアップを行います.これらの会員を新しい表にバックアップします.表名はcfmembergbakです.
 select * into cfmemberbak from member where uniqueid in

 (select uniqueid from mem_localmemberbaseinfo)

 9,続いて、2種類の情況に分けて1、私達の重複した会員のお金と積分を直接に現在のデータベースの中に入れて、2、これらの重複した会員を作って、txtバックアップの予備を作って、お金を今の会員の中に入れません.
私たちは先にお金を追加します. 
update mem_localmemberbaseinfo set

balance=mem_localmemberbaseinfo.balance+a.balance,

score=mem_localmemberbaseinfo.score+a.score

from member as a

where mem_localmemberbaseinfo.uniqueid=a.uniqueid

 このように、重複会員のお金とポイントを現在のデータベースに加算します.ポイントを追加しないとスコアを削除できます.
 
 そしてtxtのバックアップをしました.私たちは先ほど重複会員の情報をバックアップしました.だから、 これは比較的簡単です.cmdで運転します.
C:\>osql -E -d local -Q "select uniqueid,balance/100 as money from cfmemberbak where balance>0" -o c:\cfmemberbak.txt
 
上のcmd命令「-E」を自分で変えてください.「-U netcafe-P」  ここではお金持ちの会員だけを選別します.
10,以下はメンバー表と会員表のカード番号を重複した会員を削除します.
 delete member where uniqueid in(select uniqueid from mem_localmemberbaseinfo)

11,IDは0から増加しました.そして唯一なので、メンバー表里のIDを今のメンバー表里のIDとは違って、原理的には現在の会員数をidに足せばいいです.ここで20000を追加します.
update member set id=id+20000

13,メンバー表のデータを現在の会員表に挿入します.
insert into  mem_localmemberbaseinfo  select * from member

 14ここでは基本的な仕事が終わったとしても、お金は以前の2つのネットカフェのお金と同じですか?
1> select sum(balance/100) from mem_localmemberbaseinfo

2> go



 --------------------

                95139

 こちら、総金額は95139です.大丈夫です.ここで終わります.