国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本
首頁
|
新聞
|
娛樂
|
游戲
|
科普
|
文學
|
編程
|
系統(tǒng)
|
數(shù)據(jù)庫
|
建站
|
學院
|
產(chǎn)品
|
網(wǎng)管
|
維修
|
辦公
|
熱點
首頁
>
數(shù)據(jù)庫
>
SQL Server
> 正文
sqlserver bcp(數(shù)據(jù)導入導出工具)一般用法與命令詳解
2020-07-25 13:15:06
字體:
大
中
小
來源:
轉(zhuǎn)載
供稿:網(wǎng)友
bcp是SQL Server中負責導入導出數(shù)據(jù)的一個命令行工具,它是基于DB-Library的,并且能以并行的方式高效地導入導出大批量的數(shù)據(jù)。bcp可以將數(shù)據(jù)庫的表或視圖直接導出,也能通過SELECT FROM語句對表或視圖進行過濾后導出。在導入導出數(shù)據(jù)時,可以使用默認值或是使用一個格式文件將文件中的數(shù)據(jù)導入到數(shù)據(jù)庫或?qū)?shù)據(jù)庫中的數(shù)據(jù)導出到文件中。下面將詳細討論如何利用bcp導入導出數(shù)據(jù)。
1. bcp的主要參數(shù)介紹
bcp共有四個動作可以選擇。
(1) 導入。
這個動作使用in命令完成,后面跟需要導入的文件名。
(2) 導出。
這個動作使用out命令完成,后面跟需要導出的文件名。
(3) 使用SQL語句導出。
這個動作使用queryout命令完成,它跟out類似,只是數(shù)據(jù)源不是表或視圖名,而是SQL語句。
(4) 導出格式文件。
這個動作使用format命令完成,后而跟格式文件名。
下面介紹一些常用的選項:
-f format_file
format_file表示格式文件名。這個選項依賴于上述的動作,如果使用的是in或out,format_file表示已經(jīng)存在的格式文件,如果使用的是format則表示是要生成的格式文件。
-x
這個選項要和-f format_file配合使用,以便生成xml格式的格式文件。
-F first_row
指定從被導出表的哪一行導出,或從被導入文件的哪一行導入。
-L last_row
指定被導出表要導到哪一行結(jié)束,或從被導入文件導數(shù)據(jù)時,導到哪一行結(jié)束。
-c
使用char類型做為存儲類型,沒有前綴且以"/t"做為字段分割符,以"/n"做為行分割符。
-w
和-c類似,只是當使用Unicode字符集拷貝數(shù)據(jù)時使用,且以nchar做為存儲類型。
-t field_term
指定字符分割符,默認是"/t"。
-r row_term
指定行分割符,默認是"/n"。
-S server_name[ /instance_name]
指定要連接的SQL Server服務(wù)器的實例,如果未指定此選項,bcp連接本機的SQL Server默認實例。如果要連接某臺機器上的默認實例,只需要指定機器名即可。
-U login_id
指定連接SQL Sever的用戶名。
-P password
指定連接SQL Server的用戶名密碼。
-T
指定bcp使用信任連接登錄SQL Server。如果未指定-T,必須指定-U和-P。
-k
指定空列使用null值插入,而不是這列的默認值。
2. 如何使用bcp導出數(shù)據(jù)
(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 --使用信任連接
下面是上述命令執(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
在使用密碼登錄時需要將-U后的用戶名和-P后的密碼加上雙引號。
注:bcp除了可以在控制臺執(zhí)行外,還可以通過調(diào)用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不僅可以接受表名或視圖名做為參數(shù),也可以接受SQL做為參數(shù)。通過SQL語句可以對要導出的表進行過濾,然后導出過濾后的記錄。
EXEC master..xp_cmdshell 'bcp "SELECT TOP 20 * FROM AdventureWorks.sales.currency" queryout c:/currency2.txt -c -U"sa" -P"password"'
bcp還可以通過簡單地設(shè)置選項對導出的行進行限制。
這條命令使用了兩個參數(shù)-F 10和-L 13,表示從SE
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"'
LECT TOP 20 * FROM AdventureWorks.sales.currency所查出來的結(jié)果中取第10條到13條記錄進行導出。
3. 如何使用bcp導出格式文件
bcp不僅可以根據(jù)表、視圖導入導出數(shù)據(jù),還可以配合格式文件對導入導出數(shù)據(jù)進行限制。格式文件以純文本文件形式存在,分為一般格式和xml格式。用戶可以手工編寫格式文件,也可以通過bcp命令根據(jù)表、視圖自動生成格式文件。
EXEC master..xp_cmdshell 'bcp AdventureWorks.sales.currency format nul -f c:/currency_format1.fmt -c -T'
上述命令將currency表的結(jié)構(gòu)生成了一個格式文件currency_format1.fmt,下面是這個格式文件的內(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
這個格式文件記錄了這個表的字段(共3個字段)類型、長度、字符和行分割符和字段名等信息。
bcp還可以通過-x選項生成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導入數(shù)據(jù)
bcp可以通過in命令將上面所導出的currency1.txt和currency2.txt再重新導入到數(shù)據(jù)庫中,由于currency有主鍵,因此我們將復制一個和currency的結(jié)構(gòu)完全一樣的表。
SELECT TOP 0 * INTO AdventureWorks.sales.currency1 FROM AdventureWorks.sales.currency
將數(shù)據(jù)導入到currency1表中
EXEC master..xp_cmdshell 'bcp AdventureWorks.sales.currency1 in c:/currency1.txt -c -T'
導入數(shù)據(jù)也同樣可以使用-F和-L選項來選擇導入數(shù)據(jù)的記錄行。
EXEC master..xp_cmdshell 'bcp AdventureWorks.sales.currency1 in c:/currency1.txt -c -F 10 -L 13 -T'
在導入數(shù)據(jù)時可以根據(jù)已經(jīng)存在的格式文件將滿足條件的記錄導入到數(shù)據(jù)庫中,不滿足則不導入。如上述的格式文件中的第三個字段的字符長度是24,如果某個文本文件中的相應(yīng)字段的長度超過24,則這條記錄將不被導入到數(shù)據(jù)庫中,其它滿足條件的記錄正常導入。
使用普通的格式文件
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提供的一個快捷的數(shù)據(jù)導入導出工具。使用它不需要啟動任何圖形管理工具就能以高效的方式導入導出數(shù)據(jù)。當然,它也可以通過xp_cmdshell在SQL語句中執(zhí)行,通過這種方式可以將其放到客戶端程序中(如delphi、c#等)運行,這也是使客戶端程序具有數(shù)據(jù)導入導出功能的方法之一。
bcp命令詳解(sybase)
bcp 實用工具在 Microsoft SQL Server 2000 實例和數(shù)據(jù)文件之間以用戶指定的格式復制數(shù)據(jù)。
語法
bcp {[[database_name.][owner].]{table_name | view_name} | "query"}
{in | out | queryout | format} data_file
[-m max_errors] [-f format_file] [-e err_file]
[-F first_row] [-L last_row] [-b batch_size]
[-n] [-c] [-w] [-N] [-V (60 | 65 | 70)] [-6]
[-q] [-C code_page] [-t field_term] [-r row_term]
[-i input_file] [-o output_file] [-a packet_size]
[-S server_name[/instance_name]] [-U login_id] [-P password]
[-T] [-v] [-R] [-k] [-E] [-h "hint [,...n]"]
參數(shù)
database_name
指定的表或視圖所在數(shù)據(jù)庫的名稱。如果未指定,則為用戶默認數(shù)據(jù)庫。
owner
表或視圖所有者的名稱。如果執(zhí)行大容量復制操作的用戶擁有指定的表或視圖,則 owner 是可選的。如果沒有指定 owner 并且執(zhí)行大容量復制操作的用戶不擁有指定的表或視圖,則 Microsoft? SQL Server? 2000 將返回錯誤信息并取消大容量復制操作。
table_name
是將數(shù)據(jù)復制到 SQL Server 時 (in) 的目的表名,以及從 SQL Server 復制數(shù)據(jù)時 (out) 的源表名。
view_name
是將數(shù)據(jù)復制到 SQL Server 時 (in) 的目的視圖名,以及從 SQL Server 復制數(shù)據(jù)時 (out) 的源視圖名。只有其中所有列都引用同一個表的視圖才能用作目的視圖。有關(guān)將數(shù)據(jù)復制到視圖的限制的更多信息,請參見 INSERT。
Query
是返回一個結(jié)果集的 Transact-SQL 查詢。如果查詢返回多個結(jié)果集,例如指定 COMPUTE 子句的 SELECT 語句,只有第一個結(jié)果集將復制到數(shù)據(jù)文件,隨后的結(jié)果集被忽略。使用雙引號引起查詢語句,使用單引號引起查詢語句中嵌入的任何內(nèi)容。在從查詢中大容量復制數(shù)據(jù)時,還必須指定 queryout。
in | out | queryout | format
指定大容量復制的方向。in 是從文件復制到數(shù)據(jù)庫表或視圖,out 是指從數(shù)據(jù)庫表或視圖復制到文件。只有從查詢中大容量復制數(shù)據(jù)時,才必須指定 queryout。根據(jù)指定的選項(-n、-c、-w、-6 或 -N)以及表或視圖分隔符,format 將創(chuàng)建一個格式文件。如果使用 format,則還必須指定 -f 選項。
說明 Microsoft SQL Server 6.5 中的 bcp 實用工具不支持大容量復制到包含 sql_variant 或 bigint 數(shù)據(jù)類型的表。
data_file
大容量復制表或視圖到磁盤(或者從磁盤復制)時所用數(shù)據(jù)文件的完整路徑。當將數(shù)據(jù)大容量復制到 SQL Server 時,此數(shù)據(jù)文件包含將復制到指定表或視圖的數(shù)據(jù)。當從 SQL Server 大容量復制數(shù)據(jù)時,該數(shù)據(jù)文件包含從表或視圖復制的數(shù)據(jù)。路徑可以有 1 到 255 個字符。
-m max_errors
指定在大容量復制操作取消之前可能產(chǎn)生的錯誤的最大數(shù)目。bcp 無法復制的每一行都將被忽略并計為一個錯誤。如果沒有包括該選項,則默認為 10。
-f format_file
指定格式文件的完整路徑,該格式文件包含以前在同一個表或視圖上使用 bcp 時的存儲響應(yīng)。當使用由 format 選項所創(chuàng)建的格式文件大容量復制入或復制出數(shù)據(jù)時,使用此選項。格式文件的創(chuàng)建是可選的。在提示幾個格式問題之后,bcp 將提示是否在格式文件中保存回答。默認文件名為 Bcp.fmt。大容量復制數(shù)據(jù)時,bcp 可引用一個格式文件,因此不必重新交互輸入以前的回答。如果未使用此選項,也沒有指定 主站蜘蛛池模板:
文山县
|
定襄县
|
德庆县
|
博罗县
|
泸溪县
|
铜鼓县
|
定安县
|
揭东县
|
行唐县
|
江都市
|
丰顺县
|
光山县
|
井研县
|
宜君县
|
呼伦贝尔市
|
吴堡县
|
都安
|
澎湖县
|
浪卡子县
|
略阳县
|
巴塘县
|
临安市
|
海淀区
|
运城市
|
舞钢市
|
蒲江县
|
呼图壁县
|
西盟
|
乃东县
|
玛曲县
|
台中市
|
定兴县
|
鄂伦春自治旗
|
陕西省
|
宁陵县
|
奈曼旗
|
孝义市
|
德安县
|
正宁县
|
民乐县
|
吴桥县
|