BCP 數據的導入和導出


BCP 命令的參數很多,使用 -h 查看幫助信息,注意:參數是區分大小寫的

使用BCP命令導出和導入數據常用的參數如下

bcp {[[database_name.][schema_name]].{table_name | view_name} | "query"}

{in | out | queryout}  數據文件

[-c 字符類型]  | [-w 寬字符類型]
[-t 字段終止符]    [-r 行終止符]
[-i 輸入文件]       [-o 輸出文件]       
[-S 服務器名稱]   [-U 用戶名]           [-P 密碼]
[-T 可信連接]      [-d 數據庫名稱]

[-k 保留NULL值]

-c 使用char類型做為存儲類型,沒有前綴且以"\t"做為字段分割符,以"\n"做為行分割符。

-w 使用Unicode字符集拷貝數據,在數據庫中,需要將Table Column設置為 nchar或nvarchar存儲類型。如果 -c 和 -w 同時指定,那么 -w 將覆蓋 -c。

-t field_term 指定column分割符,默認是"\t"。

-r row_term 指定row分割符,默認是"\n"。

-S server_name[ \instance_name] 指定要連接的SQL Server服務器的實例,如果未指定此選項,BCP連接本機的SQL Server默認實例。如果要連接某台機器上的默認實例,只需要指定機器名即可。

-U login_id 指定連接SQL Sever的用戶名。

-P password 指定連接SQL Server的用戶名密碼。

-T 指定BCP使用信任連接登錄SQL Server。如果未指定-T,必須指定-U和-P。

-d 指定數據庫名稱

-k 指定空列使用null值插入,而不是這列的默認值。

 

一,使用bcp 將整個table中的數據導出到txt或csv文檔中

bcp db_study.dbo.sales out D:\test.txt -S . -U sa -P sa -t '\t' -w 
bcp db_study.dbo.sales out D:\test.csv
-S . -U sa -P sa -t ',' -w

二,使用 query statement 將查詢結果導出到txt 或 csv文檔中

1,配置SQL Server,允許運行 xp_cmdshell 命令

-- 允許配置高級選項  
EXEC master.sys.sp_configure 'show advanced options', 1  
-- 重新配置  
RECONFIGURE  
-- 啟用xp_cmdshell  
EXEC master.sys.sp_configure 'xp_cmdshell', 1  
--重新配置  
RECONFIGURE

否則,SQL Server 會拋出錯誤信息

SQL Server 阻止了對組件“xp_cmdshell”的 過程“sys.xp_cmdshell”的訪問,因為此組件已作為此服務器安全配置的一部分而被關閉。系統管理員可以通過使用 sp_configure 啟用“xp_cmdshell”。有關啟用“xp_cmdshell”的詳細信息,請搜索 SQL Server 聯機叢書中的“xp_cmdshell”。

啟用“xp_cmdshell” 被認為是不安全的,在使用完 “xp_cmdshell” 命令之后,使用以下script將其禁用。 

-- 允許配置高級選項  
EXEC master.sys.sp_configure 'show advanced options', 1  
-- 重新配置  
RECONFIGURE  
-- 禁用xp_cmdshell  
EXEC master.sys.sp_configure 'xp_cmdshell', 0
--重新配置  
RECONFIGURE

2,使用  xp_cmdshell 命令運行BCP命令,將數據導出

EXEC master..xp_cmdshell 'bcp "SELECT [Store] ,[Item] ,[Color] ,[Quantity] FROM [db_study].[dbo].[Inventory]" queryout D:\test.txt -S . -U sa -P sa -t "\t" -w '

EXEC master..xp_cmdshell 'bcp "SELECT [Store] ,[Item] ,[Color] ,[Quantity] FROM [db_study].[dbo].[Inventory]" queryout D:\test.csv -S . -U sa -P sa -t "," -w '

3,使用  xp_cmdshell 命令,也可以將整個Table的數據導出

EXEC master..xp_cmdshell 'bcp [db_study].[dbo].[Inventory] out D:\test.txt -S . -U sa -P sa -t "\t" -w '

EXEC master..xp_cmdshell 'bcp [db_study].[dbo].[Inventory] out D:\test.csv -S . -U sa -P sa -t "," -w '


三,將數據導入到SQL Server

CREATE TABLE [dbo].[Inventory_LoadIn]
(
    [Store] [nvarchar](2) NULL,
    [Item] [varchar](20) NULL,
    [Color] [varchar](10) NULL,
    [Quantity] [int] NULL
)

1,使用BCP,將txt文檔中的數據導入到table [dbo].[Inventory_LoadIn] 中

bcp [db_study].[dbo].[Inventory_LoadIn] in D:\test.txt -S . -U sa -P sa -t "\t" -w 

bcp [db_study].[dbo].[Inventory_LoadIn] in D:\test.csv -S . -U sa -P sa -t "," -w 

2,使用xp_cmdshell 命令執行bcp,將數據導入到數據庫table中

EXEC master..xp_cmdshell 'bcp [db_study].[dbo].[Inventory_LoadIn] in D:\test.txt -S . -U sa -P sa -t "\t" -w '

EXEC master..xp_cmdshell 'bcp [db_study].[dbo].[Inventory_LoadIn] in D:\test.csv -S . -U sa -P sa -t "," -w '


參考文檔:

bcp Utility

使用BCP導出導入數據

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM