mysql navicat导入bcp_SQL Server中BCP导入导出用法详解
bcp命令是SQL
Server提供的一個(gè)快捷的數(shù)據(jù)導(dǎo)入導(dǎo)出工具。使用它不需要啟動(dòng)任何圖形管理工具就能以高效的方式導(dǎo)入導(dǎo)出數(shù)據(jù)。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)出,也能通過SELECT?FROM語句對(duì)表或視圖進(jìn)行過濾后導(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)出到文件中。
一、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語句導(dǎo)出。
這個(gè)動(dòng)作使用queryout命令完成,它跟out類似,只是數(shù)據(jù)源不是表或視圖名,而是SQL語句。
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)值。
二、使用BCP導(dǎo)出數(shù)據(jù)
1、在Command窗口導(dǎo)出數(shù)據(jù)
bcp命令可以直接在Command窗口運(yùn)行,你可以單擊開始菜單——運(yùn)行——cmd——進(jìn)入Command窗口,然后輸入你編寫好的bcp語句。
1)導(dǎo)出整個(gè)表或視圖
--使用可信連接導(dǎo)出整個(gè)表
bcp pTest.dbo.transinfo out ?c:\test.txt -c
-T
--使用密碼連接導(dǎo)出整個(gè)表
bcp pTest.dbo.transinfo out ?c:\test.txt
-S"(local)" -U"sa" -P"sa" -c
2)使用SQL語句導(dǎo)出表或視圖
--使用可信連接導(dǎo)出整個(gè)表
bcp “select * from pTest.dbo.transinfo" queryout
c:\test.txt -c -T
--使用密碼連接導(dǎo)出整個(gè)表
bcp “select * from pTest.dbo.transinfo" queryout
c:\test.txt -S"(local)" -U"sa" -P"sa" -c
2、在查詢分析器上導(dǎo)出數(shù)據(jù)
需要使用master..xp_cmdshell存儲(chǔ)過程,需要先檢查sqlserver的xp_cmdshell功能是否處于打開狀態(tài),可以通過如下命令來查看
exec sp_configure 'show advanced options'
name ?minimum
maximum ?config_value ?run_value
----------------------------------- ?----------- ?----------- ?---------- ?-----------
show advanced options ?0 ?1 ?0 ?0
如果config_value和
run_value的值為0,表明處于關(guān)閉狀態(tài)(為1時(shí)為開啟狀態(tài))。可以通過下列命令來開啟:
exec sp_configure 'show advanced options',1
reconfigure
開啟后的狀態(tài)為:
name ?minimum ?maximum ?config_value
run_value
----------------------------------- ----------- -----------
------------ -----------
show advanced options ?0 ?1 ?1
1
此時(shí)再檢查“xp_cmdshell”是否處于開啟狀態(tài),通過如下命令來查看:
exec sp_configure 'xp_cmdshell'
name ?minimum ?maximum ?config_value
run_value
----------------------------------- ----------- -----------
------------ -----------
xp_cmdshell ?0 ?1
0 ?0
如果config_value和
run_value的值為0,表明處于關(guān)閉狀態(tài)(為1時(shí)為開啟狀態(tài))。可以通過下列命令來開啟:
exec sp_configure 'xp_cmdshell',1
reconfigure
開啟后的狀態(tài)為:
name ?minimum ?maximum ?config_value
run_value
----------------------------------- ----------- -----------
------------ -----------
xp_cmdshell ?0 ?1
1 ?1
當(dāng)然你也可以進(jìn)入sqlserver外圍應(yīng)用配置器——功能的外圍應(yīng)用配置器——選中xp_cmdshell——開啟。也可以通過執(zhí)行sql語句的方式打開xp_cmdshell功能,最后總的開啟xp_cmdshell的sql語句為:
use master
exec sp_configure 'show advanced
options',1
reconfigure
exec sp_configure
'xp_cmdshell',1
reconfigure
1)導(dǎo)出整個(gè)表或視圖
--使用可信連接導(dǎo)出整個(gè)表
exec master..xp_cmdshell 'bcp pTest.dbo.transinfo out
c:\test2012-12-14.txt -c -T'
--使用密碼連接導(dǎo)出整個(gè)表
exec master..xp_cmdshell 'bcp pTest.dbo.transinfo out
c:\test.txt -S"(local)" -U"sa" -P"sa" -c'
2)使用SQL語句導(dǎo)出表或視圖
--使用可信連接導(dǎo)出整個(gè)表
exec master..xp_cmdshell 'bcp "select * from
pTest.dbo.transinfo" queryout ?c:\test.txt -c
-T'
--使用密碼連接導(dǎo)出整個(gè)表
exec master..xp_cmdshell 'bcp "select * from
pTest.dbo.transinfo" queryout ?c:\test.txt
-S"(local)" -U"sa" -P"sa" -c'
3)對(duì)表數(shù)據(jù)進(jìn)行過濾導(dǎo)出
bcp不僅可以接受表名或視圖名做為參數(shù),也可以接受SQL做為參數(shù)。通過SQL語句可以對(duì)要導(dǎo)出的表進(jìn)行過濾,然后導(dǎo)出過濾后的記錄。
exec master..xp_cmdshell 'bcp "select top 2* from
pTest.dbo.transinfo" queryout ?c:\test.txt
-S"(local)" -U"sa" -P"sa" -c'
bcp還可以通過簡(jiǎn)單地設(shè)置選項(xiàng)對(duì)導(dǎo)出的行進(jìn)行限制。
exec master..xp_cmdshell 'bcp "select * from
pTest.dbo.transinfo" queryout ?c:\test.txt -F2 -L4
-S"(local)" -U"sa" -P"sa" -c'
表示從表所查詢出來的結(jié)果中,取第2條到第4條數(shù)據(jù)進(jìn)行導(dǎo)出。
4)使用BCP導(dǎo)出格式文件
bcp還可以通過-x選項(xiàng)生成xml格式的格式文件。xml格式文件所描述的內(nèi)容和普通格式文件所描述的內(nèi)容完全一樣,只是格式不同。
exec master..xp_cmdshell 'bcp pTest.dbo.transinfo
format null -f c:\test.xml -x -c -T'
三、使用BCP導(dǎo)入數(shù)據(jù)
bcp可以通過in命令將上面所導(dǎo)出的test.txt再重新導(dǎo)入到數(shù)據(jù)庫(kù)中和表transinfo的結(jié)構(gòu)完全一樣的表中。如果要導(dǎo)入的表沒有主鍵約束時(shí),也可以將數(shù)據(jù)直接導(dǎo)入到源表中。
--創(chuàng)建和transinfo結(jié)構(gòu)相同的表transinfo1
select top 0 * into transinfo1 from transinfo
--將數(shù)據(jù)導(dǎo)入到transinfo1 表中
exec master..xp_cmdshell 'bcp pTest.dbo.transinfo1
in c:\test.txt ?-c -T'
--導(dǎo)入數(shù)據(jù)也同樣可以使用-F和-L選項(xiàng)來選擇導(dǎo)入數(shù)據(jù)的記錄行。
exec master..xp_cmdshell 'bcp pTest.dbo.transinfo1
in c:\test.txt -F2 -L4 ?-c
-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)度超過24,則這條記錄將不被導(dǎo)入到數(shù)據(jù)庫(kù)中,其它滿足條件的記錄正常導(dǎo)入。
本文參考資料:http://chenjie.blog.51cto.com/24029/7195/
http://www.cnblogs.com/RascallySnake/archive/2010/11/17/1880287.html
總結(jié)
以上是生活随笔為你收集整理的mysql navicat导入bcp_SQL Server中BCP导入导出用法详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 等额本息和等额本金哪一个更划算?
- 下一篇: 冷酷的个性签名大全