小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

sql 中bcp 命令解析

 芥納須彌 2015-06-17

bcp命令有許多參數(shù),下面給出bcp命令參數(shù)的簡(jiǎn)要解析

復(fù)制代碼
用法: bcp {dbtable | query} {in | out | queryout | format} 數(shù)據(jù)文件 [-m 最大錯(cuò)誤數(shù)] [-f 格式化文件] [-e 錯(cuò)誤文件] [-F 首行] [-L 末行] [-b 批大小] [-n 本機(jī)類(lèi)型] [-c 字符類(lèi)型] [-w 寬字符類(lèi)型] [-N 將非文本保持為本機(jī)類(lèi)型] [-V 文件格式版本] [-q 帶引號(hào)的標(biāo)識(shí)符] [-C 代碼頁(yè)說(shuō)明符] [-t 字段終止符] [-r 行終止符]  [-i 輸入文件]               [-o 輸出文件]  [-a 數(shù)據(jù)包大小] [-S 服務(wù)器名稱(chēng)]  [-U 用戶名]           [-P 密碼]  [-T 可信連接]   [-v 版本] [-R 允許使用區(qū)域設(shè)置] [-k 保留空值] [-E 保留標(biāo)識(shí)值] [-h"加載提示"] [-x 生成xml 格式化文件]
復(fù)制代碼

其中最常用的已經(jīng)用粉紅色字體標(biāo)注。

2.bcp命令實(shí)例

這里我們以AdventureWorks樣例數(shù)據(jù)庫(kù)為例進(jìn)行實(shí)驗(yàn)。

2.1.將表中數(shù)據(jù)導(dǎo)出到一個(gè)文件中(使用可信連接)

bcp AdventureWorks.Sales.Currency out c:\Currency.dat -T -c

上面的參數(shù) out 表示輸出文件,c:\Currency.dat是文件名和路徑,-T表示可信連接,這個(gè)跟sqlcmd有點(diǎn)不同,在sqlcmd中使用-E表示可信連 接。-c表示以字符形式輸出,如果使用-w的話,輸出內(nèi)容相同,但是輸出文件的大小將增加一倍。如果你要將導(dǎo)出的Currency.dat文件導(dǎo)入到非 sql server數(shù)據(jù)庫(kù)中,那么使用-w比較好。

2.2.將表中數(shù)據(jù)導(dǎo)出到一個(gè)文件中(使用混合模式身份驗(yàn)證)

bcp AdventureWorks.Sales.Currency out c:\Currency.dat -c -Usa -Psa12345 -S.

這個(gè)數(shù)據(jù)導(dǎo)出語(yǔ)句與前面的不同之處是,前面使用可信連接,也就是windows驗(yàn)證,不需要輸入用戶名和密碼。而此時(shí)使用的是sql server 驗(yàn)證方式,所以得輸入sql server數(shù)據(jù)庫(kù)用戶名與密碼。這里-S表示要連接的數(shù)據(jù)源,我這里-S.表示連接本地的默認(rèn)實(shí)例,如果不加-S這個(gè)參數(shù)也會(huì)連接到默認(rèn)實(shí)例中,如果要 連接命名實(shí)例的話,可以使用參數(shù):-S

2.3.將文件中的數(shù)據(jù)導(dǎo)入到表中

bcp Utility中提到:

如果使用 bcp 備份數(shù)據(jù),請(qǐng)創(chuàng)建一個(gè)格式化文件來(lái)記錄數(shù)據(jù)格式。 bcp 數(shù)據(jù)文件不包括任何架構(gòu)或格式信息,因此如果已刪除表或視圖并且不具備格式化文件,則可能無(wú)法導(dǎo)入數(shù)據(jù)。

這句話的意思是,假如你要使用bcp來(lái)備份數(shù)據(jù)的話,那么最好也將數(shù)據(jù)的表結(jié)構(gòu)也跟數(shù)據(jù)一起導(dǎo)出來(lái)。這樣的話即使表被刪除了,也可以通過(guò)先創(chuàng)建表,然后再 使用bcp導(dǎo)入數(shù)據(jù)的方法進(jìn)行還原。但是如果你只是用bcp備份數(shù)據(jù),而沒(méi)有備份表結(jié)構(gòu),那么當(dāng)表被刪除以后,你將無(wú)法使用bcp導(dǎo)入數(shù)據(jù)。

更深層的意思就是,如果你要使用bcp導(dǎo)入數(shù)據(jù),那么必須有表結(jié)構(gòu)。這個(gè)類(lèi)似于insert into select的復(fù)制操作,因?yàn)樗残枰葎?chuàng)建好表,然后再進(jìn)行數(shù)據(jù)備份。具體可以參考:SELECT INTO 和 INSERT INTO SELECT 兩種表復(fù)制語(yǔ)句。

所以假如我們要將前面導(dǎo)出的Currency.dat導(dǎo)入到數(shù)據(jù)庫(kù)中,那么數(shù)據(jù)庫(kù)中必須有對(duì)應(yīng)的一張表,我們這里創(chuàng)建一張叫做Sales.Currency2的空表,sql語(yǔ)句如下: 

USE AdventureWorks; GO SELECT * INTO Sales.Currency2 FROM AdventureWorks.Sales.Currency WHERE 1=2;--只創(chuàng)建表結(jié)構(gòu)而不會(huì)插入數(shù)據(jù)

在創(chuàng)建好表結(jié)構(gòu)以后,就可以將本地文件中的數(shù)據(jù)導(dǎo)入到數(shù)據(jù)庫(kù)表中,導(dǎo)入的bcp命令如下:

bcp AdventureWorks.Sales.Currency2 in c:\Currency.dat -T -c

2.4.bcp中使用queryout關(guān)鍵詞

如果要根據(jù)某種條件來(lái)導(dǎo)出數(shù)據(jù)的話,可以使用queryout關(guān)鍵字。

2.4.1.將特定的列復(fù)制到數(shù)據(jù)文件中

bcp "SELECT Name FROM AdventureWorks.Sales.Currency" queryout c:\Currency.Name.dat -T -c

2.4.2.將特定的行復(fù)制到數(shù)據(jù)文件中

bcp "select * from AdventureWorks.Sales.Currency where CurrencyCode='AED' and Name='Emirati Dirham'" queryout c:\Currency3.dat -T -c

3.大數(shù)據(jù)量的批量導(dǎo)入

bcp本身就可應(yīng)用于大數(shù)據(jù)量的批量導(dǎo)入,不過(guò)他是命令行形式,如果要使用sql命令進(jìn)行大數(shù)據(jù)量的批量導(dǎo)入,可以使用bulk insert,這個(gè)在之前的一篇博客中有提到,并進(jìn)行了實(shí)驗(yàn),可以參考:某社區(qū)600萬(wàn)用戶數(shù)據(jù)導(dǎo)入MYSQL、MSSQL、Oracle數(shù)據(jù)庫(kù)方法。另外還找了一篇博客,里面列出了bulk insert和bcp的批量導(dǎo)入方式,詳細(xì)請(qǐng)參考:SQL Server BCP使用小結(jié)。

bcp并不只是只能在cmd命令行中執(zhí)行,也可以在sql查詢語(yǔ)句中執(zhí)行,不過(guò)這需要調(diào)用一個(gè)存儲(chǔ)過(guò)程。比如前面的將數(shù)據(jù)庫(kù)表的數(shù)據(jù)導(dǎo)出到一個(gè)文件中,可以在SSMS中執(zhí)行如下sql語(yǔ)句

exec master..xp_cmdshell 'bcp AdventureWorks.Sales.Currency out c:\Currency.dat -T -c'

假如你在執(zhí)行上述語(yǔ)句的時(shí)候報(bào)如下錯(cuò)誤:

SQL Server blocked access to procedure 'sys.xp_cmdshell' of component 'xp_cmdshell' because this component is turned off as part of the security configuration for this server. A system administrator can enable the use of 'xp_cmdshell' by using sp_configure. For more information about enabling 'xp_cmdshell', see "Surface Area Configuration" in SQL Server Books Online.

你可以通過(guò)執(zhí)行如下語(yǔ)句來(lái)解決問(wèn)題:參考:xp_cmdshell Option

復(fù)制代碼
-- To allow advanced options to be changed. EXEC sp_configure 'show advanced options', 1 GO -- To update the currently configured value for advanced options. RECONFIGURE GO -- To enable the feature. EXEC sp_configure 'xp_cmdshell', 1 GO -- To update the currently configured value for this feature. RECONFIGURE GO

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類(lèi)似文章 更多