日本好好热aⅴ|国产99视频精品免费观看|日本成人aV在线|久热香蕉国产在线

  • <cite id="ikgdy"><table id="ikgdy"></table></cite>
    1. 西西軟件園多重安全檢測(cè)下載網(wǎng)站、值得信賴(lài)的軟件下載站!
      軟件
      軟件
      文章
      搜索

      首頁(yè)西西教程數(shù)據(jù)庫(kù)教程 → MS SQL數(shù)據(jù)庫(kù)導(dǎo)出根據(jù)id批量導(dǎo)出數(shù)據(jù)、BCP工具很實(shí)用

      MS SQL數(shù)據(jù)庫(kù)導(dǎo)出根據(jù)id批量導(dǎo)出數(shù)據(jù)、BCP工具很實(shí)用

      相關(guān)軟件相關(guān)文章發(fā)表評(píng)論 來(lái)源:西西整理時(shí)間:2012/7/17 9:37:03字體大。A-A+

      作者:佚名點(diǎn)擊:53次評(píng)論:0次標(biāo)簽: MSSQL

      MS SQL 2000簡(jiǎn)體中文4合一 個(gè)人版、企業(yè)版、專(zhuān)業(yè)版、開(kāi)發(fā)版 帶 sp4補(bǔ)丁
      • 類(lèi)型:數(shù)據(jù)庫(kù)類(lèi)大小:535M語(yǔ)言:中文 評(píng)分:3.1
      • 標(biāo)簽:
      立即下載

      數(shù)據(jù)導(dǎo)出不只是bcp這一種方式,不過(guò)bcp的最大優(yōu)點(diǎn)是可以根據(jù)id批量導(dǎo)出數(shù)據(jù),這樣是節(jié)省時(shí)間的。還有一種是直接在頁(yè)面導(dǎo)出數(shù)據(jù),頁(yè)面列出數(shù)據(jù)庫(kù)中的數(shù)據(jù),然后選擇一種方式(如xls)導(dǎo)出來(lái)。

      由于日常基本都是與數(shù)據(jù)庫(kù)打交道,我會(huì)經(jīng)常遇到數(shù)據(jù)轉(zhuǎn)移的需求。類(lèi)似于:將服務(wù)器A的表數(shù)據(jù)轉(zhuǎn)移到服務(wù)器B的同名表中,或?qū)⒕(xiàn)上服務(wù)器的一部分?jǐn)?shù)據(jù)拉到線(xiàn)下測(cè)試服務(wù)器供開(kāi)發(fā)人員調(diào)試。通常來(lái)說(shuō),有以下幾種表到表的復(fù)制方法:

      1.建鏈接服務(wù)器,寫(xiě)INSERT語(yǔ)句。 適用于兩臺(tái)服務(wù)器能互相連接,在表的數(shù)量比較少的情況下,手動(dòng)寫(xiě)INSERT語(yǔ)句還是可以接受的。但如果兩臺(tái)服務(wù)器無(wú)法互聯(lián)或連接速度較慢,或者多個(gè)表需要手寫(xiě)插入列名,寫(xiě)起來(lái)會(huì)很麻煩,還要調(diào)試語(yǔ)句。

      2.查詢(xún)出所有數(shù)據(jù)或需要導(dǎo)出的數(shù)據(jù)或用導(dǎo)出工具存成EXCEL,再用導(dǎo)入工具導(dǎo)入目標(biāo)表。對(duì)于數(shù)據(jù)量不大、比較標(biāo)準(zhǔn)、可以規(guī)則的存成EXCEL的數(shù)據(jù)可以使用這種方法,反之會(huì)有各種問(wèn)題,最常見(jiàn)的就是大文本在導(dǎo)出成EXCEL后經(jīng)常會(huì)無(wú)法原樣導(dǎo)入,報(bào)各種格式錯(cuò)。

      3.查出需要導(dǎo)出的數(shù)據(jù),復(fù)制一下,在SSMS的編輯兩200行中選中行復(fù)制。這種方法和第二種問(wèn)題類(lèi)似,更快一點(diǎn),但要求也更嚴(yán)。要求更小的數(shù)據(jù)量,更規(guī)則的數(shù)據(jù)。

      4.原庫(kù)做備份--目標(biāo)服務(wù)器還原備份--跨庫(kù)插入數(shù)據(jù)或者直接用還原的庫(kù)。這種能完全COPY多個(gè)表,但缺點(diǎn)一是麻煩,二是需要登陸到服務(wù)器上復(fù)制備份文件下來(lái),這在管理嚴(yán)密的公司里很可能是要領(lǐng)導(dǎo)簽字的。大家懂的,所以我也不常用這種方法。

      5.BCP實(shí)用工具,也就是本文要介紹的,我現(xiàn)在最常用的數(shù)據(jù)遷移工具。無(wú)視大文本的不規(guī)則字符,無(wú)視大數(shù)據(jù)量,通過(guò)中間文件傳輸,不必登陸服務(wù)器本機(jī)。下面就從最簡(jiǎn)單的例子入手,介紹一下BCP的用法。

      假設(shè)源表名T1,數(shù)據(jù)庫(kù)名DB1,服務(wù)器器實(shí)例為SERVER1,目標(biāo)表名T2,數(shù)據(jù)庫(kù)名DB2,服務(wù)器實(shí)例為SERVER2。T1和T2的結(jié)構(gòu)完全一樣。T2中主鍵與T1不重復(fù)或者直接是空表。


      首先是導(dǎo)出語(yǔ)句:

      BCP DB1.DBO.T1 out d:\T1.dat -S SERVER1 -U sa -P sa -n

      在一臺(tái)能連接SERVER1的裝有SQLSERVER的機(jī)器上(比如SERVER1本機(jī))的命令行CMD中運(yùn)行這句命令,就會(huì)開(kāi)始運(yùn)行導(dǎo)出程序,完成后,會(huì)在D盤(pán)生成一個(gè)名為T(mén)1.dat的文件。把這個(gè)文件COPY到一臺(tái)能連接SERVER2,裝有SQLSERVER的機(jī)器上,運(yùn)行下面的導(dǎo)入語(yǔ)句:

      BCP DB2.DBO.T2 in d:\t1.dat -S SERVER2 -U sa -P sa -n

      這樣就可以了。

      下面就對(duì)上面兩個(gè)語(yǔ)句做一下說(shuō)明。


      BCP是命令,不解釋。

      DB1.DBO.T1是指定庫(kù)名、架構(gòu)名和表名。

      out/in是確定方向,out是表導(dǎo)出,in是表導(dǎo)入。out可以改成queryout,對(duì)應(yīng)的前面要改成查詢(xún)語(yǔ)句,也就是從DB1.DBO.T1改成"SELECT * FROM DB1.DBO.T1 WHERE ...."這樣的,實(shí)現(xiàn)指定數(shù)據(jù)導(dǎo)出。

      d:\T1.dat是指定文件路徑。文件名和后綴名都是隨便寫(xiě)的,我只是習(xí)慣用這種寫(xiě)法,因?yàn)槲視?huì)經(jīng)常做多個(gè)表的BCP導(dǎo)出,命名規(guī)律一點(diǎn)方便通過(guò)表名拼BCP語(yǔ)句。

      -S -U -P 分別是指定實(shí)例名、用戶(hù)名和密碼,權(quán)限的話(huà)out需要select權(quán)限,in需要SELECT和INSERT權(quán)限,如果指定了幾個(gè)特殊選項(xiàng),比如標(biāo)識(shí)列原樣插入,還需要ALTER TABLE權(quán)限。

      -n是指定格式,這里是指定了使用本機(jī)格式(-n),數(shù)據(jù)會(huì)以16進(jìn)制的形式存儲(chǔ)于文件中,因此不存在大文本干擾格式的問(wèn)題,只要兩個(gè)表的結(jié)構(gòu)完全一樣,一定會(huì)成功的。

      還有一些其它的格式,如-c,是為了給不同類(lèi)型的數(shù)據(jù)庫(kù)(如MYSQL或ORACLE)導(dǎo)入用的,它會(huì)導(dǎo)出成標(biāo)準(zhǔn)的文本格式,但這就會(huì)導(dǎo)致一些含亂碼和不規(guī)則字符的大文本干擾導(dǎo)入,所以我在不關(guān)注數(shù)據(jù)文件內(nèi)容的時(shí)候都是用-n的格式的。


      此外還有一些擴(kuò)展參數(shù),如添加-E后開(kāi)啟標(biāo)識(shí)列原樣插入,用于原樣復(fù)制含有IDENTITY列的表。-b指定批大小,-F和-L指定起始和終止行數(shù)。想了解的可以去MSDN的說(shuō)明上自己了解,我就不多復(fù)制了,只提供原文地址:

      http://msdn.microsoft.com/zh-cn/library/ms162802.aspx

      注意除了BCP和IN/OUT,后面的所有參數(shù)都是大小寫(xiě)敏感,-S不要寫(xiě)成-s,-n和-N的含義也不同。

      ---------------------------------------用分割線(xiàn),就是這么自信---------------------------------------------------

      下面說(shuō)一下另一種擴(kuò)展。很多時(shí)候,需要導(dǎo)出的表有多個(gè)甚至是全庫(kù),這時(shí)我一般會(huì)先用系統(tǒng)表查出表名,或在EXCEL中寫(xiě)入需要的全部表名,然后復(fù)制一下,再在CMD中粘貼,就可以實(shí)現(xiàn)多表的導(dǎo)入導(dǎo)出了。下面就貼出一段庫(kù)中全表BCP導(dǎo)出的生成SQL,供大家參考:

      SELECT 'BCP DB1.DBO.'+NAME+' OUT D:\'+NAME+'.dat -S SERVER1 -U sa -P sa -n'
      ,'TRUNCATE TABLE '+NAME
      ,'BCP DB2.DBO.'+NAME+' in D:\'+NAME+'.dat -S SERVER2 -U sa -P sa -n'
      FROM SYS.TABLES
      ORDER BY NAME
      第一句復(fù)制到cmd中導(dǎo)出所有文件,復(fù)制文件到能庫(kù)目標(biāo)庫(kù)的機(jī)器上,先用TRUNCATE在SSMS中運(yùn)行清空SERVER2上的所有待導(dǎo)入表,再運(yùn)行第二個(gè)BCP語(yǔ)句導(dǎo)入。我一直是這樣做的,在結(jié)構(gòu)一致的情況下,至今沒(méi)出過(guò)問(wèn)題。

      另外一種方法:使用SSMS的生成腳本功能,在選項(xiàng)中選擇生成數(shù)據(jù)腳本(2008和R2不一樣,一個(gè)是有個(gè)是和否,另一個(gè)是三個(gè)選項(xiàng):生成、生成和數(shù)據(jù)、數(shù)據(jù)),能生成表中所有INSERT的語(yǔ)句,也可以原樣復(fù)制,對(duì)于超大的數(shù)據(jù)量,生成的腳本也是超超大的,一般來(lái)說(shuō)小于1W行的數(shù)據(jù)可以使用。

        數(shù)據(jù)庫(kù)
        (13)數(shù)據(jù)庫(kù)
        西西軟件園提供常用的數(shù)據(jù)軟件下載,數(shù)據(jù)庫(kù)軟件有很多,不過(guò)常用的就是,,,。數(shù)據(jù)庫(kù)是一個(gè)長(zhǎng)期存儲(chǔ)在計(jì)算機(jī)內(nèi)的有組織的有共享的統(tǒng)一管理的數(shù)據(jù)集合。它是一個(gè)按數(shù)據(jù)結(jié)構(gòu)來(lái)存儲(chǔ)和管理數(shù)據(jù)的計(jì)算機(jī)軟件系統(tǒng)。...更多>>

        相關(guān)評(píng)論

        閱讀本文后您有什么感想? 已有人給出評(píng)價(jià)!

        • 8 喜歡喜歡
        • 3 頂
        • 1 難過(guò)難過(guò)
        • 5 囧
        • 3 圍觀圍觀
        • 2 無(wú)聊無(wú)聊

        熱門(mén)評(píng)論

        最新評(píng)論

        發(fā)表評(píng)論 查看所有評(píng)論(0)

        昵稱(chēng):
        表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
        字?jǐn)?shù): 0/500 (您的評(píng)論需要經(jīng)過(guò)審核才能顯示)