先建立一個(gè)鏈接服務(wù)器,然后才能在存儲(chǔ)過(guò)程中使用SQL操作。
我們提供的服務(wù)有:成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、微信公眾號(hào)開(kāi)發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、靖遠(yuǎn)ssl等。為上千多家企事業(yè)單位解決了網(wǎng)站和推廣的問(wèn)題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的靖遠(yuǎn)網(wǎng)站制作公司
如果不建立鏈接服務(wù)器,無(wú)法使用SQL操作。但可以使用導(dǎo)入導(dǎo)出的功能進(jìn)行數(shù)據(jù)傳輸。
1、打開(kāi)SqlServer數(shù)據(jù)庫(kù),選中要備份的數(shù)據(jù)庫(kù),【右鍵】選擇【任務(wù)】,點(diǎn)擊【備份】。
2、輸入【數(shù)據(jù)集】名稱,選擇備份路徑,點(diǎn)擊【確定】就完成了數(shù)據(jù)庫(kù)的備份。
3、【右鍵】選擇【任務(wù)】,點(diǎn)擊【還原】,選擇【數(shù)據(jù)庫(kù)】。
4、選擇之前備份的數(shù)據(jù)庫(kù),點(diǎn)擊【確定】。
5、至此SqlServer備份還原的操作就已完成。
1 在S2數(shù)據(jù)庫(kù)中新建一個(gè)表SS,將S1 2006 11 的數(shù)據(jù)導(dǎo)到SS表,
2 然后將SS的主鍵列刪掉(右鍵菜單,設(shè)計(jì)表,將主鍵ID刪掉)。
3 把SS數(shù)據(jù)導(dǎo)入S2
難點(diǎn)就在于ID沖突,新建一個(gè)臨時(shí)表SS存放導(dǎo)入的數(shù)據(jù),然后把ID刪掉再導(dǎo)入就OK了。
以下有幾款遷移工具的對(duì)比,可以參考,比較推薦DB2DB.
軟件易用性主要是指軟件在導(dǎo)入前的配置是否容易。由于很多軟件設(shè)計(jì)是面向程序員而非一般的數(shù)據(jù)庫(kù)管理人員、甚至是普通的應(yīng)用程序?qū)嵤┤藛T,而這一類人員很多時(shí)候并沒(méi)有數(shù)據(jù)源配置經(jīng)驗(yàn)。因?yàn)橐恍┦褂?ODBC 或者 ADO 進(jìn)行配置的程序往往會(huì)讓這類用戶造成困擾(主要是不知道應(yīng)該選擇什么類型的數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序)。下面讓我們看看四個(gè)工具的設(shè)計(jì)界面:
1、SQLyog
SQLyog?使用的是古老的 ODBC 連接,但對(duì)于新一代的程序來(lái)說(shuō),這種方式的非常的不熟悉并且不容易使用,并且必須要求本機(jī)安裝好相應(yīng)的數(shù)據(jù)庫(kù)的 ODBC 驅(qū)動(dòng)程序(SQL Server 一般自帶好)。
2、Navicat?Premium
NavicatPremium是四個(gè)應(yīng)用工具中設(shè)計(jì)最不人性化的一個(gè):從上圖怎么也想像不到要點(diǎn)按那個(gè)小按鈕來(lái)添加一個(gè)新的連接,并且這個(gè)連接設(shè)置不會(huì)保存,每次導(dǎo)入時(shí)都必須重新設(shè)置。NavicatPremium使用的是比 ODBC 稍先進(jìn)的 ADO 設(shè)置方式(199X年代的產(chǎn)物),但使用上依然是針對(duì)老一代的程序員。
3、Mss2sql
Mss2sql?是最容易在百度上搜索出來(lái)的工具,原因之一是它出現(xiàn)的時(shí)間較早。
Mss2sql由于是很有針對(duì)性的從 SQLServer 遷移到 MySQL,因?yàn)榻缑媸褂昧瞬僮飨驅(qū)гO(shè)計(jì),使用非常容易。同時(shí)在設(shè)置的過(guò)程中,有非常多的選項(xiàng)進(jìn)行細(xì)節(jié)調(diào)整,可以感覺(jué)到軟件經(jīng)過(guò)了相當(dāng)長(zhǎng)一段時(shí)間的使用漸漸完善出來(lái)的。
4、DB2DB
DB2DB?由于是由國(guó)人開(kāi)發(fā),因此無(wú)論是界面還是提示信息,都是全程漢字。另外,由于 DB2DB 在功能上很有針對(duì)性,因?yàn)榻缑嬖O(shè)計(jì)一目了然和易使用。和 mss2sql 一樣, DB2DB 提供了非常多的選項(xiàng)供用戶進(jìn)行選擇和設(shè)置。
三、處理速度和內(nèi)存占用評(píng)測(cè)
在本評(píng)測(cè)前,本人的一位資深同事曾經(jīng)從網(wǎng)上下載了某款遷移軟件,把一個(gè)大約2500萬(wàn)記錄數(shù)的數(shù)據(jù)表轉(zhuǎn)送到阿里云 MySQL,結(jié)果經(jīng)過(guò)了三天三夜(好在其中兩天是星期六和星期日兩個(gè)休息日)都未能遷移過(guò)來(lái)。因此這一次需要對(duì)這四個(gè)工具的處理速度作一個(gè)詳細(xì)的測(cè)試。
考慮到從 SQL Server 遷移到 MySQL 會(huì)出現(xiàn)兩種不同的場(chǎng)景:
從 SQL Server 遷移到本地 MySQL 進(jìn)行代碼測(cè)試和修改;
從 SQL Server 遷移到云端 MySQL 數(shù)據(jù)庫(kù)正式上線使用;
以下為測(cè)試過(guò)程中的截圖:
1、SQLyog
請(qǐng)點(diǎn)擊輸入圖片描述
2、Navicat Premium
請(qǐng)點(diǎn)擊輸入圖片描述
請(qǐng)點(diǎn)擊輸入圖片描述
注意:我們?cè)跍y(cè)試 Navicat Premium 遷移到 ?MySQL 時(shí)發(fā)現(xiàn),對(duì)于 SQL Server 的 Money 類型支持不好(不排除還有其它的數(shù)據(jù)類型支持不好)。Money 類型字段默認(rèn)的小數(shù)位長(zhǎng)度為 255,使得無(wú)法創(chuàng)建數(shù)據(jù)表導(dǎo)致整個(gè)測(cè)試無(wú)法成功,需要我們逐張表進(jìn)行表結(jié)構(gòu)修改才能完成測(cè)試過(guò)程。
Navicat Premium?的處理速度屬于中等,不算快也不算慢,但 CPU 占用還有內(nèi)存占用都處于高位水平。不過(guò)以現(xiàn)在的電腦硬件水平來(lái)說(shuō),還是可以接受。但 CPU 占用率太高,將使得數(shù)據(jù)在導(dǎo)入的過(guò)程中,服務(wù)器不能用于其它用途。
3、Mss2sql
Mss2sql?并沒(méi)有提供計(jì)時(shí)器,因此我們使用人工計(jì)時(shí)的方法,整個(gè)過(guò)程處理完畢大于是 726 秒。Mss2sql 的 CPU 占用率相對(duì)其它工具來(lái)說(shuō)較高,但仍屬于可以接受的范圍之內(nèi)。
4、DB2DB
請(qǐng)點(diǎn)擊輸入圖片描述
DB2DB?同樣遷移 300萬(wàn)數(shù)據(jù)時(shí),僅僅使用了 2 分 44 秒,這個(gè)速度相當(dāng)驚人。不過(guò)最后的結(jié)果出現(xiàn)一個(gè) BUG,就是提示了轉(zhuǎn)換成功,但后面的進(jìn)度條卻沒(méi)有走完(在后面的數(shù)據(jù)完整性評(píng)測(cè)中,我們驗(yàn)證了數(shù)據(jù)其實(shí)是已經(jīng)全部處理完畢了)。
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ù)庫(kù)用戶
@rmtpassword = 'password' --密碼
3. 建立一個(gè)作業(yè),通過(guò)作業(yè)調(diào)度存儲(chǔ)過(guò)程,存儲(chǔ)過(guò)程使用類似的語(yǔ)句將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開(kāi)始繼續(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ù)據(jù)傳輸,其實(shí)是指SQLServer訪問(wèn)Access、Excel間的數(shù)據(jù)。
為什么要考慮到這個(gè)問(wèn)題呢?
由于歷史的原因,客戶以前的數(shù)據(jù)很多都是在存入在文本數(shù)據(jù)庫(kù)中,如Acess、Excel、FoXPro?,F(xiàn)在系統(tǒng)升級(jí)及數(shù)據(jù)庫(kù)服務(wù)器如SQLServer、Oracle后,經(jīng)常需要訪問(wèn)文本數(shù)據(jù)庫(kù)中的數(shù)據(jù),所以就會(huì)產(chǎn)生這樣的需求。前段時(shí)間出差的項(xiàng)目,就是面臨這樣的一個(gè)問(wèn)題:SQLServer和VFP之間的數(shù)據(jù)交換。
要完成標(biāo)題的需要,在SQLServer中是一件非常簡(jiǎn)單的事情。 通常的可以有3種方式:1、DTS工具 2、BCP 3、分布式查詢 DTS就不需要說(shuō)了,因?yàn)槟鞘菆D形化操作界面,很容易上手。
這里主要講下后面兩們,分別以查、增、刪、改作為簡(jiǎn)單的例子:
下面廢話就不說(shuō)了,直接以T-SQL的形式表現(xiàn)出來(lái)。
一、SQLServer和Access
1、查詢Access中數(shù)據(jù)的方法:
select * from OpenRowSet('microsoft.jet.oledb.4.0',';database=c:\db2.mdb','select * from serv_user')
或
select * from OpenDataSource('Microsoft.Jet.OLEDB.4.0','Data Source="c:\DB2.mdb";User ID=Admin;PassWord=')...serv_user
2、從SQLServer向Access寫(xiě)數(shù)據(jù):
insert into OpenRowSet('microsoft.jet.oledb.4.0',';database=c:\db2.mdb','select * from Accee表')
select * from SQLServer表
或用BCP
master..xp_cmdshell'bcp "serv-htjs.dbo.serv_user" out "c:\db3.mdb" -c -q -S"." -U"sa" -P"sa"'
上面的區(qū)別主要是:OpenRowSet需要mdb和表存在,BCP會(huì)在不存在的時(shí)候生成該mdb
3、從Access向SQLServer寫(xiě)數(shù)據(jù):有了上面的基礎(chǔ),這個(gè)就很簡(jiǎn)單了
insert into SQLServer表 select * from
OpenRowSet('microsoft.jet.oledb.4.0',';database=c:\db2.mdb','select * from Accee表')
或用BCP
master..xp_cmdshell'bcp "serv-htjs.dbo.serv_user" in "c:\db3.mdb" -c -q -S"." -U"sa" -P"sa"'
4、刪除Access數(shù)據(jù):
delete from OpenRowSet('microsoft.jet.oledb.4.0',';database=c:\db2.mdb','select * from serv_user')
where lock=0
5、修改Access數(shù)據(jù):
update OpenRowSet('microsoft.jet.oledb.4.0',';database=c:\db2.mdb','select * from serv_user')
set lock=1
SQLServer和Access大致就這么多。
二、SQLServer和Excel
1、向Excel查詢
select * from OpenRowSet('microsoft.jet.oledb.4.0','Excel 8.0;HDR=yes;database=c:\book1.xls;','select * from [Sheet1$]') where c like '%f%'
select * from
OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
,'Excel 5.0;HDR=YES;IMEX=2;DATABASE=c:\book1.xls',[sheet1$])
1)hdr=yes時(shí)可以把xls的第1行作為字段看待,如第1個(gè)中hdr=no的話,where時(shí)就會(huì)報(bào)錯(cuò)
2)[]和美圓$必須要,否則M$可不認(rèn)這個(gè)賬
2、修改Execl
update OpenRowSet('microsoft.jet.oledb.4.0','Excel 8.0;hdr=yes;database=c:\book1.xls;','select * from [Sheet1$]')
set a='erquan' where c like '%f%'
3、導(dǎo)入導(dǎo)出
insert into OpenRowSet('microsoft.jet.oledb.4.0','Excel 8.0;hdr=yes;database=c:\book1.xls;','select * from [Sheet2$]')(id,name)
select id,name from serv_user
或BCP
master..xp_cmdshell'bcp "serv-htjs.dbo.serv_user" out "c:\book2.xls" -c -q -S"." -U"sa" -P"sa"'
從Excel向SQLServer導(dǎo)入:
select * into serv_user_bak
from OpenRowSet('microsoft.jet.oledb.4.0','Excel 8.0;HDR=yes;database=c:\book1.xls;','select * from [Sheet1$]')
如果表serv_user_bak不存在,則創(chuàng)建有關(guān)BCP和分布式查詢的詳細(xì)解答,就查SQLServer自帶的幫助吧。 SQLServer和txt文件、Html文件、VFP文件的數(shù)據(jù)交換都顯得非常容易了。。。。 其實(shí)這些內(nèi)容在幫助里都有,偶只不過(guò)是總結(jié)了一下
當(dāng)前名稱:sqlserver數(shù)據(jù)傳輸,sqlserver導(dǎo)入數(shù)據(jù)
本文地址:http://jinyejixie.com/article36/dssehpg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、網(wǎng)站營(yíng)銷、定制開(kāi)發(fā)、標(biāo)簽優(yōu)化、品牌網(wǎng)站制作、外貿(mào)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)