bcp 實用工具可以在 Microsoft SQL Server 實例和用戶指定格式的數據文件間大容量復制數據。 使用 bcp 實用工具可以將大量新行導入 SQL Server 表,或將表數據導出到數據文件。
需要下載:https://www.microsoft.com/zh-CN/download/details.aspx?id=56567
https://docs.microsoft.com/zh-cn/sql/tools/bcp-utility?view=sql-server-2017
1.使用命令行
-整個表導出(out)
bcp 數據庫名.dbo.表名 out c:\currency.txt -S"數據庫實例" -U"用戶" -P"密碼" -c
bcp 數據庫名.dbo.表名 out c:\currency.txt -S"數據庫實例" -U"用戶" -P"密碼" -c
--使用SQL語句導出(queryout)
bcp "select * from 數據庫名.dbo.表名" queryout c:\currency.txt -S 數據庫實例 -U"用戶" -P"密碼" -c
--設置字段分隔符和行分隔符(-c -t"," -r"\n"),不想輸入字段類型等請配合-c一起使用
bcp "select * from 數據庫名.dbo.表名" queryout c:\currency.txt -S 數據庫實例 -U"用戶" -P"密碼" -c -t"," -r"\n"
--指定每批導入數據的行數、指定服務器發出或接收的每個網絡數據包的字節數(-k -b5000 -a65535)
bcp "select * from 數據庫名.dbo.表名" queryout c:\currency.txt -S 數據庫實例 -U"用戶" -P"密碼" -c -t"," -r"\n" -k -b5000 -a65535
bcp "select * from 數據庫名.dbo.表名" queryout c:\currency.txt -S 數據庫實例 -U"用戶" -P"密碼" -c
--設置字段分隔符和行分隔符(-c -t"," -r"\n"),不想輸入字段類型等請配合-c一起使用
bcp "select * from 數據庫名.dbo.表名" queryout c:\currency.txt -S 數據庫實例 -U"用戶" -P"密碼" -c -t"," -r"\n"
--指定每批導入數據的行數、指定服務器發出或接收的每個網絡數據包的字節數(-k -b5000 -a65535)
bcp "select * from 數據庫名.dbo.表名" queryout c:\currency.txt -S 數據庫實例 -U"用戶" -P"密碼" -c -t"," -r"\n" -k -b5000 -a65535
2. --在SQL SERVER 查詢分析器上執行(EXEC master..xp_cmdshell)
-- 允許配置高級選項
EXEC master.sys.sp_configure 'show advanced options', 1
-- 重新配置
RECONFIGURE
-- 啟用xp_cmdshell
EXEC master.sys.sp_configure 'xp_cmdshell', 1
--重新配置
RECONFIGURE
EXEC master.sys.sp_configure 'show advanced options', 1
-- 重新配置
RECONFIGURE
-- 啟用xp_cmdshell
EXEC master.sys.sp_configure 'xp_cmdshell', 1
--重新配置
RECONFIGURE
EXEC master..xp_cmdshell 'bcp "select * from 數據庫名.dbo.表名" queryout c:\currency.txt -S 數據庫實例 -U"用戶" -P"密碼" -c'
--把SQL語句生成一個.sql文件,然后調用
--注:路徑的文件夾名稱中間不能有空格
exec master..xp_cmdshell 'osql -S 數據庫實例 -U 用戶 -P 密碼 -i C:\cmdshellTest.sql'
--將數據導入到currency表中
EXEC master..xp_cmdshell 'bcp 數據庫名.dbo.表名 in c:\currency.txt -c -T'
--導入數據也同樣可以使用-F和-L選項來選擇導入數據的記錄行。
EXEC master..xp_cmdshell 'bcp 數據庫名.dbo.表名 in c:\currency.txt -c -F 10 -L 13 -T'