欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

BCP

系統 1902 0

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

下面將詳細討論如何利用BCP導入導出數據。

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 --使用信任連接

下面是上述命令執行后的輸出結果

Starting copy...
105 rows copied.
Network packet size (bytes): 4096
Clock Time (ms.) Total : 10 Average : (10500.00 rows per sec.)

下面是currency1.txt的部分內容

AED Emirati Dirham 1998-06-01 00:00:00.000
AFA Afghani 1998-06-01 00:00:00.000
... ... ...
... ... ...
ZWD Zimbabwe Dollar 1998-06-01 00:00:00.000

在使用密碼登錄時需要將-U后的用戶名和-P后的密碼加上雙引號。

:BCP除了可以在控制臺執行外,還可以通過調用SQL Server的一個系統存儲過程xp_cmdshell以SQL語句的方式運行BCP。如上述第一條命令可改寫為

EXEC master..xp_cmdshell 'BCP AdventureWorks.sales.currency out c:\currency1.txt -c -U"sa" -P"password"'

執行xp_cmdshell后,返回信息以表的形式輸出。為了可以方便地在SQL中執行BCP,下面的命令都使用xp_cmdshell執行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提供的一個快捷的數據導入導出工具。使用它不需要啟動任何圖形管理工具就能以高效的方式導入導出數據。當然,它也可以通過xp_cmdshell在SQL語句中執行,通過這種方式可以將其放到客戶端程序中(如delphi、c#等)運行,這也是使客戶端程序具有數據導入導出功能的方法之一。

BCP


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 久久精品久久精品国产大片 | 富二代精品视频 | 老妇毛片| 亚洲国产精品热久久 | 免费大香伊蕉在人线国产 | 色爱阁| 国产视频国产 | 婷婷亚洲五月琪琪综合 | 性夜影院爽黄a爽在线看香蕉 | 中文字幕在线视频日本 | 成人羞羞网站 | 成人在线激情网 | 国产91福利在线精品剧情尤物 | 中国免费一级毛片 | 久久2 | 日本黄色小视频在线观看 | 国产精品久久久久秋霞影视 | 成人免费视频一区 | 欧美精品第二页 | 国产在线91精品入口首页 | 成人毛片网站 | 我把寡妇日出水好爽视频 | 丁香婷婷久久久综合精品国产 | 欧美中文字幕在线播放 | 中文乱码一二三四有限公司 | 久久免费国产视频 | 欧美午夜一区 | 色婷五月综激情亚洲综合 | 国产精品高潮呻吟久久av黑人 | 一级做a爱片特黄在线观看yy | 久久久精品免费观看 | 福利视频1000| 国产视频99 | 新白娘子传奇50集免费赵雅芝版 | 色综合97天天综合网 | 成人国产网站 | 91九色视频 | 男女性爽大片在线观看 | 久久久午夜精品 | 亚洲操片 | 成人精品一区二区三区 |