• <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)德,非澹薄無以明志,非寧靜無以致遠。
            隨筆 - 397, 文章 - 0, 評論 - 196, 引用 - 0
            數據加載中……

            sql server的數據導入導出命令行命令BCP使用詳解

            BCP是SQL Server中負責導入導出數據的一個命令行工具,它是基于DB-Library的,并且能以并行的方式高效地導入導出大批量的數據。
            BCP可以將數據庫的表或視圖直接導出,也能通過SELECT FROM語句對表或視圖進行過濾后導出。


            1. BCP的主要參數介紹

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

            下面常用的選項:

            -f format_file
            format_file表示格式文件名。這個選項依賴于上述的動作,如果使用的是in或out,format_file表示已經存在的格式文件,如果使用的是format則表示是要生成的格式文件。

            -x
            這個選項要和-f format_file配合使用,以便生成xml格式的格式文件。

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

            -L last_row
            指定被導出表要導到哪一行結束,或從被導入文件導數據時,導到哪一行結束。

            -c
            使用char類型做為存儲類型,沒有前綴且以"\t"做為字段分割符,以"\n"做為行分割符。

            -w
            和-c類似,只是當使用Unicode字符集拷貝數據時使用,且以nchar做為存儲類型。

            -t field_term
            指定字符分割符,默認是"\t"。

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

            -S server_name[ \instance_name]
            指定要連接的SQL Server服務器的實例,如果未指定此選項,BCP連接本機的SQL Server默認實例。如果要連接某臺機器上的默認實例,只需要指定機器名即可。

            -U login_id
            指定連接SQL Sever的用戶名。

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

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

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

            2. 如何使用BCP導出數據

            (1) 使用BCP導出整個表或視圖。

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

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

            注:BCP除了可以在控制臺執(zhí)行外,還可以通過調用SQL Server的一個系統(tǒng)存儲過程xp_cmdshell以SQL語句的方式運行BCP。
            如上述第一條命令可改寫為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) 對要導出的表進行過濾。

            BCP不僅可以接受表名或視圖名做為參數,也可以接受SQL做為參數。通過SQL語句可以對要導出的表進行過濾,然后導出過濾后的記錄。

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

            BCP還可以通過簡單地設置選項對導出的行進行限制。

            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"'

            這條命令使用了兩個參數-F 10和-L 13,表示從SELECT TOP 20 * FROM AdventureWorks.sales.currency所查出來的結果中取第10條到13條記錄進行導出。

            3. 如何使用BCP導出格式文件

            BCP不僅可以根據表、視圖導入導出數據,還可以配合格式文件對導入導出數據進行限制。
            格式文件以純文本文件形式存在,分為一般格式和xml格式。
            用戶可以手工編寫格式文件,也可以通過BCP命令根據表、視圖自動生成格式文件。

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

            上述命令將currency表的結構生成了一個格式文件currency_format1.fmt,下面是這個格式文件的內容。

            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

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

            BCP還可以通過-x選項生成xml格式的格式文件。

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

            4. 如何使用BCP導入數據

            BCP可以通過in命令將上面所導出的currency1.txt和currency2.txt再重新導入到數據庫中,由于currency有主鍵,因此我們將復制一個和currency的結構完全一樣的表。

            SELECT TOP 0 * INTO AdventureWorks.sales.currency1 FROM AdventureWorks.sales.currency
            將數據導入到currency1表中

            EXEC master..xp_cmdshell 'BCP AdventureWorks.sales.currency1 in c:\currency1.txt -c -T'
            導入數據也同樣可以使用-F和-L選項來選擇導入數據的記錄行。

            EXEC master..xp_cmdshell 'BCP AdventureWorks.sales.currency1 in c:\currency1.txt -c -F 10 -L 13 -T'
            在導入數據時可以根據已經存在的格式文件將滿足條件的記錄導入到數據庫中,不滿足則不導入。
            如上述的格式文件中的第三個字段的字符長度是24,如果某個文本文件中的相應字段的長度超過24,則這條記錄將不被導入到數據庫中,其它滿足條件的記錄正常導入。

            使用普通的格式文件
            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,導出的數據也比較完整

             


             

            posted on 2012-08-03 14:50 Benjamin 閱讀(817) 評論(0)  編輯 收藏 引用 所屬分類: 數據庫

            蜜臀久久99精品久久久久久小说| 久久亚洲sm情趣捆绑调教| 久久久久99这里有精品10| 久久久久久午夜精品| 一本色道久久HEZYO无码| 热久久这里只有精品| 性高朝久久久久久久久久| 亚洲AV乱码久久精品蜜桃| 久久久久综合国产欧美一区二区| AAA级久久久精品无码片| 久久精品亚洲欧美日韩久久| 亚洲AV无码久久精品成人| 国产精品久久成人影院| 国产成人精品免费久久久久| 久久强奷乱码老熟女网站| 久久久一本精品99久久精品88| 少妇熟女久久综合网色欲| 国内精品伊人久久久久AV影院| 久久精品女人天堂AV麻| 中文字幕热久久久久久久| 精品多毛少妇人妻AV免费久久| 欧美日韩中文字幕久久伊人| 久久免费99精品国产自在现线 | 99久久99久久精品国产片果冻 | 亚洲国产成人乱码精品女人久久久不卡| 久久精品国产亚洲av影院| 久久久WWW成人免费精品| 国产99久久久国产精免费| 99久久精品毛片免费播放| 国产成人久久精品一区二区三区 | 狠狠色丁香久久婷婷综合_中| 久久九九久精品国产| 日韩精品久久久久久| 国产午夜精品久久久久免费视 | 精品久久久久久无码国产| 91精品国产高清91久久久久久| 久久综合亚洲欧美成人| 国产亚洲精久久久久久无码| 蜜臀av性久久久久蜜臀aⅴ| 精品免费久久久久久久| .精品久久久麻豆国产精品|