用python是非常方便的,非常方便就能備份mysql和sqlserver,
目前成都創(chuàng)新互聯(lián)已為近1000家的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬主機(jī)、綿陽服務(wù)器托管、企業(yè)網(wǎng)站設(shè)計(jì)、龍港網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
下面我們來具體看看如何用:
#coding=gbk
import os
import time
os.system("mysqldump -h192.168.0.2 -uddd -pggg xdreams E:/mysqldack/xdreams/xdreamsfdfdf.txt")
上面就成功把0.2機(jī)器上的mysql數(shù)據(jù)庫備份下來,
導(dǎo)入數(shù)據(jù)庫:mysql -h192.168.0.2 -uroot -psz212 -P 7659 hotelguanli G:/temp/2013-03-28-10-34-35.sql
下面是sqlserver的:
os.system("sqlcmd.exe -S 127.0.0.1,56678 -U sa -P 123456 -d 數(shù)據(jù)庫名 -b -c cmd_end -Q \"backup database 數(shù)據(jù)庫名 to disk='d:/sql.bak'\"")
看看,是不是很簡單。
當(dāng)然還可以通過os.path.getsize(r"d:/sql.bak")/1024來獲取這個(gè)文件的大小,返回的是K,
備份文件還可以用時(shí)間值來命名:
如:
nowtime=time.strftime('%Y-%m-%d-%H-%M-%S',time.localtime(time.time()))+""
改造上面一條:
os.system("mysqldump -h192.168.0.2 -uddd -pggg xdreams E:/mysqldack/xdreams/xdreams"+nowtime+".txt")
如果再完善一點(diǎn),就加個(gè)備份完成后發(fā)一封郵件到你郵箱里吧。
其它要注意到的一點(diǎn)就是sqlxerver和備份中,sqlserver服務(wù)器實(shí)列要支付遠(yuǎn)程連接,開啟sql brower服務(wù)
兩個(gè)數(shù)據(jù)庫的密碼不要含有"^"這個(gè)符號(hào),因?yàn)樵赾md里好像識(shí)別不到它,轉(zhuǎn)義也不行,具體原因沒查到.
現(xiàn)在,加在windows或linux的計(jì)劃任務(wù)中去,每天執(zhí)行它,至此,大功告成.
1. SQLSERVER服務(wù)器上面安裝oracle客戶端,配置服務(wù)命名(假設(shè)為 test)
2. 在SQLSERVER服務(wù)器上面建立鏈接服務(wù)器,腳本如下
SQL code?
SQL code-- Adding linked server:
exec sp_addlinkedserver @server = 'test' ,
@srvproduct = 'ORACLE',
@provider = 'MSDAORA',
@datasrc = 'test'
-- Adding linked server login:
exec sp_addlinkedsrvlogin @useself='false ', @rmtsrvname = 'test',
@rmtuser = 'user', --數(shù)據(jù)庫用戶
@rmtpassword = 'password' --密碼
3. 建立一個(gè)作業(yè),通過作業(yè)調(diào)度存儲(chǔ)過程,存儲(chǔ)過程使用類似的語句將oracle的數(shù)據(jù)插入到sqlserver表中
SQL code?
insert into sqlserver表 select * from test..oracle表名
4. 如果要球ORACLE數(shù)據(jù)是實(shí)時(shí)增加的,并且ORACLE記錄上有遞增的字段,可以在SQLSERVER上面建立一個(gè)表記錄上次插入的id,然后下次可以從上次的ID+1開始繼續(xù)插入
SQL code?
insert into sqlserver表 select * from test..oracle表名 where id@id
5. 防止sqlserver同步的時(shí)候oracle仍在不斷的插入,每次要取一個(gè)結(jié)束ID
SQL code?
select @endid=max(id) from test..oracle表名.
假設(shè)要將SQL
Server中的Northwind數(shù)據(jù)庫中的Products表導(dǎo)出到Oracle的Scott用戶
首先需要有安裝SQL
Server企業(yè)版
1.打開工具:
開始-程序-
導(dǎo)入和SQL
Server數(shù)據(jù)導(dǎo)出數(shù)據(jù)
2.下一步,選擇數(shù)據(jù)源
[數(shù)據(jù)源]選擇“用于SQL
Server的Microsoft
OLE
DB提供程序”,這應(yīng)該是缺省值。
[服務(wù)器]選擇要導(dǎo)出數(shù)據(jù)的服務(wù)器,如果是本機(jī),選擇(local)
[數(shù)據(jù)庫]選擇要導(dǎo)出的數(shù)據(jù)所在的庫,這里選擇Northwind
3.下一步,選擇目的
[目的]選擇Microsoft
ODBC
for
Oracle
[DSN]選擇用戶/系統(tǒng)DSN一項(xiàng),然后在下拉列表框中找一個(gè)已經(jīng)連接到了Scott用戶的DSN名稱。
如果下拉列表中沒有,點(diǎn)下拉列表框右側(cè)的[新建],出現(xiàn)創(chuàng)建新數(shù)據(jù)源界面。
接下來選擇系統(tǒng)數(shù)據(jù)源,下一步,在驅(qū)動(dòng)程序列表中選擇Microsoft
ODBC
for
Oracle
下一步,完成,出現(xiàn)Microsoft
ODBC
for
Oracle安裝界面
[數(shù)據(jù)源名稱]隨便輸入,比如sss
[說明]可以不填
[用戶名稱]填入要SQL
Server數(shù)據(jù)導(dǎo)出到的Oracle用戶名稱,這里是scott
[服務(wù)器]填入要連接到Oracle服務(wù)器所使用的服務(wù)名,比方說使用sqlplus
scott/tiger@server1可以連接到數(shù)據(jù)庫,那么這里就填入server1。如果本機(jī)就是服務(wù)器,使用sqlplus
scott/tiger即可連接到數(shù)據(jù)庫,這里空著不填即可。
這樣就創(chuàng)建好了一個(gè)數(shù)據(jù)源sss,保證下拉列表框中選擇了sss一項(xiàng)。
[用戶名]填入SQL
Server數(shù)據(jù)導(dǎo)出到的Oracle用戶名稱,這里是scott
[密碼]填入SQL
Server數(shù)據(jù)導(dǎo)出到的Oracle用戶使用的密碼,這里是tiger
4.下一步,指定表復(fù)制或查詢
如果要導(dǎo)出的內(nèi)容是整個(gè)表,選擇[從源數(shù)據(jù)庫復(fù)制表和視圖]
如果要導(dǎo)出的內(nèi)容是表的一部分列,行,可以選擇[用一條查詢指定要傳輸?shù)臄?shù)據(jù)],這時(shí)需要寫出一個(gè)查詢語句
這里選擇第一項(xiàng)[從源數(shù)據(jù)庫復(fù)制表和視圖]
5.下一步,選擇源表和視圖
點(diǎn)中要導(dǎo)出的表Products一行的復(fù)選框,目的、轉(zhuǎn)換兩欄就會(huì)出現(xiàn)內(nèi)容。
目的可以用來選擇表名。轉(zhuǎn)換可以用來修改列的數(shù)據(jù)類型或是整個(gè)建表的SQL語句
6.下一步,保存、調(diào)度和復(fù)制包
選中立即運(yùn)行
7.下一步,正在完成DTS導(dǎo)入/導(dǎo)出向?qū)?/p>
8.完成
提示“成功地將n個(gè)表從Microsoft
SQLServer復(fù)制到了Oracle”
9.完成,關(guān)閉導(dǎo)入導(dǎo)出程序
注意:因?yàn)閛racle的表名都是大寫的,而SQL的表可能是大小混寫的,所以導(dǎo)入后在oracle里查不到該表,比如這個(gè)Products表在oracle里查詢就應(yīng)該寫成select
*
from
scott."Products";為了方便查詢可以通過批量修改表名為大寫以便后面導(dǎo)數(shù)據(jù)的工作。