新聞中心
導(dǎo)讀:數(shù)據(jù)的導(dǎo)入導(dǎo)出,相信很多人都非常熟悉,可是當涉及到大量數(shù)據(jù)的導(dǎo)入導(dǎo)出時,就會出現(xiàn)很多的問題,下面就為大家講解一種能夠?qū)崿F(xiàn)大量數(shù)據(jù)導(dǎo)入導(dǎo)出的方法,就是使用BCP的方案。

站在用戶的角度思考問題,與客戶深入溝通,找到七星關(guān)區(qū)網(wǎng)站設(shè)計與七星關(guān)區(qū)網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:網(wǎng)站建設(shè)、成都做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、國際域名空間、網(wǎng)絡(luò)空間、企業(yè)郵箱。業(yè)務(wù)覆蓋七星關(guān)區(qū)地區(qū)。
SQL Server的導(dǎo)出導(dǎo)入方式有:
1、在SQL Server中提供了導(dǎo)入導(dǎo)出的界面操作。
2、在界面操作中又分【復(fù)制一個或多個表或視圖的數(shù)據(jù)】和【編寫查詢以指定要傳輸?shù)臄?shù)據(jù)】兩種模式,第一種是直接對表、視圖進行全部字段、記錄進行導(dǎo)出,而第二種就是可以通過SQL語句來控制導(dǎo)出導(dǎo)入的字段和行。
3、使用簡單但有用的SQL腳本 中的【表復(fù)制】這里面的方法。
4、再一種就是在命令行中使用bcp命令來導(dǎo)入導(dǎo)出數(shù)據(jù),需要特別說明的是,這是對大數(shù)據(jù)量導(dǎo)入導(dǎo)出就好的辦法。下面是我實踐出來可以使用的腳本,但是我在使用bcp的時候遇到了一些問題,希望大家給于幫助。謝謝。(PS:問題在下面代碼中)使用xp_cmdshell的時候可能會有些問題,可以參考:MSsql2005 如何啟用xp_cmdshell
還沒有解決的問題
1:使用BCP命令時如果導(dǎo)出的字段為空想替換為其它描述(比如替換成NULL)如何辦?
2:使用 case when 時就會出現(xiàn)1023字節(jié)的問題,那有沒其它辦法解決呢?
3:使用BCP命令導(dǎo)出大數(shù)據(jù)量時出現(xiàn)錯誤:查詢提示超過了最大目錄緩沖區(qū) 1023 字節(jié)(2164 字節(jié)輸入)。
備注
1:已經(jīng)使用了Coalesce代替case when,但是還是超出字符數(shù)了。
2:對以網(wǎng)上說的放到Temp數(shù)據(jù)庫中、中間表,這些?但是數(shù)據(jù)表幾十G了,還能這樣?
整個表導(dǎo)出(out)
bcp 數(shù)據(jù)庫名.dbo.表名 out c:\currency.txt -S"數(shù)據(jù)庫實例" -U"用戶" -P"密碼" -c
使用SQL語句導(dǎo)出(queryout)
bcp "select * from 數(shù)據(jù)庫名.dbo.表名" queryout c:\currency.txt -S 數(shù)據(jù)庫實例 -U"用戶" -P"密碼" -c
設(shè)置字段分隔符和行分隔符(-c -t"," -r"\n"),不想輸入字段類型等請配合-c一起使用
bcp "select * from 數(shù)據(jù)庫名.dbo.表名" queryout c:\currency.txt -S 數(shù)據(jù)庫實例 -U"用戶" -P"密碼" -c -t"," -r"\n"
指定每批導(dǎo)入數(shù)據(jù)的行數(shù)、指定服務(wù)器發(fā)出或接收的每個網(wǎng)絡(luò)數(shù)據(jù)包的字節(jié)數(shù)(-k -b5000 -a65535)
bcp "select * from 數(shù)據(jù)庫名.dbo.表名" queryout c:\currency.txt -S 數(shù)據(jù)庫實例 -U"用戶" -P"密碼" -c -t"," -r"\n" -k -b5000 -a65535
在查詢分析器上執(zhí)行(EXEC master..xp_cmdshell)
EXEC master..xp_cmdshell 'bcp "select * from 數(shù)據(jù)庫名.dbo.表名" queryout c:\currency.txt -S 數(shù)據(jù)庫實例 -U"用戶" -P"密碼" -c'
把SQL語句生成一個.sql文件,然后調(diào)用
注:路徑的文件夾名稱中間不能有空格
exec master..xp_cmdshell 'osql -S 數(shù)據(jù)庫實例 -U 用戶 -P 密碼 -i C:\cmdshellTest.sql'
將數(shù)據(jù)導(dǎo)入到currency表中
EXEC master..xp_cmdshell 'bcp 數(shù)據(jù)庫名.dbo.表名 in c:\currency.txt -c -T'
導(dǎo)入數(shù)據(jù)也同樣可以使用-F和-L選項來選擇導(dǎo)入數(shù)據(jù)的記錄行。
EXEC master..xp_cmdshell 'bcp 數(shù)據(jù)庫名.dbo.表名 in c:\currency.txt -c -F 10 -L 13 -T'
在使用命令xp_cmdshell的時候需要設(shè)置權(quán)限:
/*MSsql2005 如何啟用xp_cmdshell
默認情況下,sql server2005安裝完后,xp_cmdshell是禁用的(可能是安全考慮),如果要使用它,可按以下步驟
*/
允許配置高級選項
EXEC sp_configure 'show advanced options', 1
GO
重新配置
RECONFIGURE
GO
啟用xp_cmdshell
EXEC sp_configure 'xp_cmdshell', 1
GO
重新配置
RECONFIGURE
GO
執(zhí)行想要的xp_cmdshell語句
Exec xp_cmdshell 'query user'
GO
允許配置高級選項
EXEC sp_configure 'show advanced options', 1
GO
重新配置
RECONFIGURE
GO
禁用xp_cmdshell
EXEC sp_configure 'xp_cmdshell', 0
GO
重新配置
RECONFIGURE
GO
或者使用圖形界面:
應(yīng)用上文中介紹的方法就能夠輕松實現(xiàn)使用bcp進行大數(shù)據(jù)量導(dǎo)出導(dǎo)入,希望大家通過上文的學(xué)習(xí),都能夠很熟練的掌握這個技巧,相信這在您以后工作中遇到類似問題時會非常有幫助的。
網(wǎng)站欄目:使用bcp進行大數(shù)據(jù)量導(dǎo)出導(dǎo)入
網(wǎng)站URL:http://m.fisionsoft.com.cn/article/cocpdhh.html


咨詢
建站咨詢
