亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

BCP

系統(tǒng) 1813 0

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)出。在導(dǎo)入導(dǎo)出數(shù)據(jù)時(shí),可以使用默認(rèn)值或是使用一個(gè)格式文件將文件中的數(shù)據(jù)導(dǎo)入到數(shù)據(jù)庫(kù)或?qū)?shù)據(jù)庫(kù)中的數(shù)據(jù)導(dǎo)出到文件中。

下面將詳細(xì)討論如何利用BCP導(dǎo)入導(dǎo)出數(shù)據(jù)。

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類似,只是數(shù)據(jù)源不是表或視圖名,而是SQL語(yǔ)句。
(4) 導(dǎo)出格式文件。
這個(gè)動(dòng)作使用format命令完成,后而跟格式文件名。

下面介紹一些常用的選項(xiàng):

-f format_file
format_file表示格式文件名。這個(gè)選項(xiàng)依賴于上述的動(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類型做為存儲(chǔ)類型,沒有前綴且以"\t"做為字段分割符,以"\n"做為行分割符。

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

-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的用戶名。

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

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

下面是上述命令執(zhí)行后的輸出結(jié)果

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

下面是currency1.txt的部分內(nèi)容

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

在使用密碼登錄時(shí)需要將-U后的用戶名和-P后的密碼加上雙引號(hào)。

:BCP除了可以在控制臺(tái)執(zhí)行外,還可以通過(guò)調(diào)用SQL Server的一個(gè)系統(tǒng)存儲(chǔ)過(guò)程xp_cmdshell以SQL語(yǔ)句的方式運(yùn)行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) 對(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格式。用戶可以手工編寫格式文件,也可以通過(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è)字段)類型、長(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)存在的格式文件將滿足條件的記錄導(dǎo)入到數(shù)據(jù)庫(kù)中,不滿足則不導(dǎo)入。如上述的格式文件中的第三個(gè)字段的字符長(zhǎng)度是24,如果某個(gè)文本文件中的相應(yīng)字段的長(zhǎng)度超過(guò)24,則這條記錄將不被導(dǎo)入到數(shù)據(jù)庫(kù)中,其它滿足條件的記錄正常導(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'

總結(jié)

BCP命令是SQL Server提供的一個(gè)快捷的數(shù)據(jù)導(dǎo)入導(dǎo)出工具。使用它不需要啟動(dòng)任何圖形管理工具就能以高效的方式導(dǎo)入導(dǎo)出數(shù)據(jù)。當(dāng)然,它也可以通過(guò)xp_cmdshell在SQL語(yǔ)句中執(zhí)行,通過(guò)這種方式可以將其放到客戶端程序中(如delphi、c#等)運(yùn)行,這也是使客戶端程序具有數(shù)據(jù)導(dǎo)入導(dǎo)出功能的方法之一。

BCP


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

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

【本文對(duì)您有幫助就好】

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

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 精品国产三级 | 久久99精品综合国产首页 | 91精品国产免费久久国语麻豆 | 国产亚洲精品久久久久久久软件 | 人人爱人人草 | 国产一区在线观看视频 | 国产香蕉尹人综合在线 | 一级毛片私人影院 | 四虎永久免费紧急入口 | 91欧美亚洲 | 日韩在线观看一区二区三区 | 无遮挡无遮挡91桃色在线观看 | 口国产成人高清在线播放 | 国产一级毛片午夜 | 精品欧美一区二区精品久久 | 婷婷操 | 中文字幕精品亚洲无线码二区 | 伊人久久国产 | 欧洲美女高清一级毛片 | 国产精品热久久毛片 | 国模私拍视频在线 | 极品毛片 | 国产99热在线观看 | 一级毛片高清免费播放 | 欧美 日| 亚洲精品区一区二区三区四 | 欧美日日干| 亚洲自拍激情 | 国内精品免费一区二区观看 | 四虎影院www| 99热这里只有精品在线播放 | 青草九九| 在线播放国产一区二区三区 | 色播五月婷婷 | 久久国产乱子伦精品免费一 | 日韩xx00| 中文字幕一区二区三区精品 | 99久热只有精品视频免费看 | 91免费福利视频 | 久久久美女视频 | 国产精品免费观看网站 |