• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Benjamin

            靜以修身,儉以養(yǎng)德,非澹薄無(wú)以明志,非寧?kù)o無(wú)以致遠(yuǎn)。
            隨筆 - 397, 文章 - 0, 評(píng)論 - 196, 引用 - 0
            數(shù)據(jù)加載中……

            sql server的數(shù)據(jù)導(dǎo)入導(dǎo)出命令行命令BCP使用詳解

            BCP是SQL Server中負(fù)責(zé)導(dǎo)入導(dǎo)出數(shù)據(jù)的一個(gè)命令行工具,它是基于DB-Library的,并且能以并行的方式高效地導(dǎo)入導(dǎo)出大批量的數(shù)據(jù)。
            BCP可以將數(shù)據(jù)庫(kù)的表或視圖直接導(dǎo)出,也能通過(guò)SELECT FROM語(yǔ)句對(duì)表或視圖進(jìn)行過(guò)濾后導(dǎo)出。


            1. BCP的主要參數(shù)介紹

            BCP共有四個(gè)動(dòng)作可以選擇。
            (1) 導(dǎo)入。
            這個(gè)動(dòng)作使用in命令完成,后面跟需要導(dǎo)入的文件名。
            (2) 導(dǎo)出。
            這個(gè)動(dòng)作使用out命令完成,后面跟需要導(dǎo)出的文件名。
            (3) 使用SQL語(yǔ)句導(dǎo)出。
            這個(gè)動(dòng)作使用queryout命令完成,它跟out類(lèi)似,只是數(shù)據(jù)源不是表或視圖名,而是SQL語(yǔ)句。
            (4) 導(dǎo)出格式文件。
            這個(gè)動(dòng)作使用format命令完成,后而跟格式文件名。

            下面常用的選項(xiàng):

            -f format_file
            format_file表示格式文件名。這個(gè)選項(xiàng)依賴(lài)于上述的動(dòng)作,如果使用的是in或out,format_file表示已經(jīng)存在的格式文件,如果使用的是format則表示是要生成的格式文件。

            -x
            這個(gè)選項(xiàng)要和-f format_file配合使用,以便生成xml格式的格式文件。

            -F first_row
            指定從被導(dǎo)出表的哪一行導(dǎo)出,或從被導(dǎo)入文件的哪一行導(dǎo)入。

            -L last_row
            指定被導(dǎo)出表要導(dǎo)到哪一行結(jié)束,或從被導(dǎo)入文件導(dǎo)數(shù)據(jù)時(shí),導(dǎo)到哪一行結(jié)束。

            -c
            使用char類(lèi)型做為存儲(chǔ)類(lèi)型,沒(méi)有前綴且以"\t"做為字段分割符,以"\n"做為行分割符。

            -w
            和-c類(lèi)似,只是當(dāng)使用Unicode字符集拷貝數(shù)據(jù)時(shí)使用,且以nchar做為存儲(chǔ)類(lèi)型。

            -t field_term
            指定字符分割符,默認(rèn)是"\t"。

            -r row_term
            指定行分割符,默認(rèn)是"\n"。

            -S server_name[ \instance_name]
            指定要連接的SQL Server服務(wù)器的實(shí)例,如果未指定此選項(xiàng),BCP連接本機(jī)的SQL Server默認(rèn)實(shí)例。如果要連接某臺(tái)機(jī)器上的默認(rèn)實(shí)例,只需要指定機(jī)器名即可。

            -U login_id
            指定連接SQL Sever的用戶(hù)名。

            -P password
            指定連接SQL Server的用戶(hù)名密碼。

            -T
            指定BCP使用信任連接登錄SQL Server。如果未指定-T,必須指定-U和-P。

            -k
            指定空列使用null值插入,而不是這列的默認(rèn)值。

            2. 如何使用BCP導(dǎo)出數(shù)據(jù)

            (1) 使用BCP導(dǎo)出整個(gè)表或視圖。

            BCP AdventureWorks.sales.currency out c:\currency1.txt -c -U"sa" -P"password" --使用密碼連接

            BCP AdventureWorks.sales.currency out c:\currency1.txt -c -T --使用信任連接

            注:BCP除了可以在控制臺(tái)執(zhí)行外,還可以通過(guò)調(diào)用SQL Server的一個(gè)系統(tǒng)存儲(chǔ)過(guò)程xp_cmdshell以SQL語(yǔ)句的方式運(yùn)行BCP。
            如上述第一條命令可改寫(xiě)為EXEC master..xp_cmdshell 'BCP AdventureWorks.sales.currency out c:\currency1.txt -c -U"sa" -P"password"'
            執(zhí)行xp_cmdshell后,返回信息以表的形式輸出。為了可以方便地在SQL中執(zhí)行BCP,下面的命令都使用xp_cmdshell執(zhí)行BCP命令。

            (2) 對(duì)要導(dǎo)出的表進(jìn)行過(guò)濾。

            BCP不僅可以接受表名或視圖名做為參數(shù),也可以接受SQL做為參數(shù)。通過(guò)SQL語(yǔ)句可以對(duì)要導(dǎo)出的表進(jìn)行過(guò)濾,然后導(dǎo)出過(guò)濾后的記錄。

            EXEC master..xp_cmdshell 'BCP "SELECT TOP 20 * FROM AdventureWorks.sales.currency" queryout c:\currency2.txt -c -U"sa" -P"password"'

            BCP還可以通過(guò)簡(jiǎn)單地設(shè)置選項(xiàng)對(duì)導(dǎo)出的行進(jìn)行限制。

            EXEC master..xp_cmdshell 'BCP "SELECT TOP 20 * FROM AdventureWorks.sales.currency" queryout c:\currency2.txt -F 10 -L 13 -c -U"sa" -P"password"'

            這條命令使用了兩個(gè)參數(shù)-F 10和-L 13,表示從SELECT TOP 20 * FROM AdventureWorks.sales.currency所查出來(lái)的結(jié)果中取第10條到13條記錄進(jìn)行導(dǎo)出。

            3. 如何使用BCP導(dǎo)出格式文件

            BCP不僅可以根據(jù)表、視圖導(dǎo)入導(dǎo)出數(shù)據(jù),還可以配合格式文件對(duì)導(dǎo)入導(dǎo)出數(shù)據(jù)進(jìn)行限制。
            格式文件以純文本文件形式存在,分為一般格式和xml格式。
            用戶(hù)可以手工編寫(xiě)格式文件,也可以通過(guò)BCP命令根據(jù)表、視圖自動(dòng)生成格式文件。

            EXEC master..xp_cmdshell 'BCP AdventureWorks.sales.currency format nul -f c:\currency_format1.fmt -c -T'

            上述命令將currency表的結(jié)構(gòu)生成了一個(gè)格式文件currency_format1.fmt,下面是這個(gè)格式文件的內(nèi)容。

            9.0
            3
            1 SQLCHAR 0 6 "\t" 1 CurrencyCode SQL_Latin1_General_CP1_CI_AS
            2 SQLCHAR 0 100 "\t" 2 Name SQL_Latin1_General_CP1_CI_AS
            3 SQLCHAR 0 24 "\r\n" 3 ModifiedDate

            這個(gè)格式文件記錄了這個(gè)表的字段(共3個(gè)字段)類(lèi)型、長(zhǎng)度、字符和行分割符和字段名等信息。

            BCP還可以通過(guò)-x選項(xiàng)生成xml格式的格式文件。

            EXEC master..xp_cmdshell 'BCP AdventureWorks.sales.currency format nul -f c:\currency_format2.fmt -x -c -T'
            xml格式文件所描述的內(nèi)容和普通格式文件所描述的內(nèi)容完全一樣,只是格式不同。

            4. 如何使用BCP導(dǎo)入數(shù)據(jù)

            BCP可以通過(guò)in命令將上面所導(dǎo)出的currency1.txt和currency2.txt再重新導(dǎo)入到數(shù)據(jù)庫(kù)中,由于currency有主鍵,因此我們將復(fù)制一個(gè)和currency的結(jié)構(gòu)完全一樣的表。

            SELECT TOP 0 * INTO AdventureWorks.sales.currency1 FROM AdventureWorks.sales.currency
            將數(shù)據(jù)導(dǎo)入到currency1表中

            EXEC master..xp_cmdshell 'BCP AdventureWorks.sales.currency1 in c:\currency1.txt -c -T'
            導(dǎo)入數(shù)據(jù)也同樣可以使用-F和-L選項(xiàng)來(lái)選擇導(dǎo)入數(shù)據(jù)的記錄行。

            EXEC master..xp_cmdshell 'BCP AdventureWorks.sales.currency1 in c:\currency1.txt -c -F 10 -L 13 -T'
            在導(dǎo)入數(shù)據(jù)時(shí)可以根據(jù)已經(jīng)存在的格式文件將滿(mǎn)足條件的記錄導(dǎo)入到數(shù)據(jù)庫(kù)中,不滿(mǎn)足則不導(dǎo)入。
            如上述的格式文件中的第三個(gè)字段的字符長(zhǎng)度是24,如果某個(gè)文本文件中的相應(yīng)字段的長(zhǎng)度超過(guò)24,則這條記錄將不被導(dǎo)入到數(shù)據(jù)庫(kù)中,其它滿(mǎn)足條件的記錄正常導(dǎo)入。

            使用普通的格式文件
            EXEC master..xp_cmdshell 'BCP AdventureWorks.sales.currency1 in c:\currency1.txt -F 10 -L 13 -c -f c:\currency_format1.fmt -T'
            使用xml格式的格式文件
            EXEC master..xp_cmdshell 'BCP AdventureWorks.sales.currency1 in c:\currency1.txt -F 10 -L 13 -c -x -f c:\currency_format2.fmt -T'

             
            注:BCP命令適用于sql server 2000/2005/2008,導(dǎo)出的數(shù)據(jù)也比較完整

             


             

            posted on 2012-08-03 14:50 Benjamin 閱讀(821) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): 數(shù)據(jù)庫(kù)

            99久久国产综合精品网成人影院| 国产成人久久久精品二区三区| 99久久婷婷国产一区二区| 国产成人精品免费久久久久| 日韩精品久久久久久久电影蜜臀| 亚洲国产欧洲综合997久久| 超级97碰碰碰碰久久久久最新| 亚洲人AV永久一区二区三区久久| 久久久久亚洲精品无码网址| 日韩欧美亚洲国产精品字幕久久久| 要久久爱在线免费观看| 精品国产99久久久久久麻豆| 亚洲av伊人久久综合密臀性色| 999久久久免费精品国产| 久久福利片| 97精品国产97久久久久久免费| 99久久中文字幕| 久久精品国产男包| 亚洲va久久久噜噜噜久久狠狠| 久久电影网2021| 国产成年无码久久久免费| 久久婷婷五月综合97色一本一本 | 久久婷婷五月综合97色一本一本| av午夜福利一片免费看久久| 国内精品免费久久影院| 色偷偷久久一区二区三区| 99久久精品免费看国产一区二区三区 | 伊人久久大香线蕉av不卡| 久久不射电影网| 久久综合精品国产二区无码| 久久精品国产精品亜洲毛片| 久久精品国产亚洲AV蜜臀色欲 | 国产精品99久久久久久董美香| 久久久SS麻豆欧美国产日韩| 久久久久久无码国产精品中文字幕| 人妻精品久久无码专区精东影业| 久久无码一区二区三区少妇| 91超碰碰碰碰久久久久久综合 | 久久亚洲精品人成综合网| 日韩人妻无码精品久久久不卡 | 国产精品免费久久久久久久久|