- How to use bcp in sql server ?
- Export text file,csv file from sql server via sql script
- Export ข้อมูลจาก SQL Server เป็น Text file,csv file ด้วย SQL Script
การ Export ไฟล์จากฐานข้อมูล Sql server เป็น Text file / CSV file
BCP เป็น Utility ตัวหนึ่งของ SQL Server ที่ใช้สำหรับ Bulk insert/ Export ไฟล์ในรูปแบบต่าง ๆ
How to use BCP in SQL Server, (วิธีการใช้งาน BCP ใน SQL Server )
1 Enabling sys.xp_cmdshell (เปิดใช้งาน xp_cmdshell)
sp_configure 'show advanced options',1
GO
RECONFIGURE
GO
sp_configure xp_cmdshell,1
GO
RECONFIGURE
If xp_cmdshell is disable this error will occure "SQL Server blocked access to procedure 'sys.xp_cmdshell"
2 Check xp_cmdshell value
Exec sp_configure
GO
go to last line and check config_value of xp_cmdshell , value need to be "1"
(ไปที่บรรทัดสุดท้ายเพื่อตรวจสอบค่า หากเป็น "0" ต้อง set เป็น "1" ในขั้นตอนที่ 2)
3 Create test sript to export data to text file (ตัวอย่าง BCP Script สำหรับ Export text file)
This example will show How to export data from table delimited by comman (",")
ในตัวอย่างจะแสดงวิธีการ Export ข้อมูลออกเป็น text file โดยคั่น Columns ด้วย comma
USE AdventureWorks
Declare @Headers varchar(1000),@sql varchar(8000), @data_file varchar(100),
@x varchar(300),@file_name varchar(100)
BEGIN
SET @file_name = 'C:\test_bcp.txt'
---------------- HEADER ROWS GENERATE ----------------
Select @Headers = IsNull(@Headers + ',', '') + Column_Name
From INFORMATION_SCHEMA.COLUMNS
Where Table_Name = 'CreditCard' ORDER BY ORDINAL_POSITION ASC
print @Headers
set @sql = 'bcp "select ''' + @Headers + '''" queryout "'+@file_name+'" -U "sa" -P "1234" -c -C 65001 -t "," -r \n'
print @sql
exec master..xp_cmdshell @sql
set @sql = 'exec master..xp_cmdshell ' + @sql
print @sql
-----------------DATA SECTION ------------------------
select @data_file=substring(@file_name,1,len(@file_name)-charindex('\',reverse(@file_name)))+'\data_file.csv'
print @data_file
set @sql = 'bcp "select * from [AdventureWorks].sales.CreditCard '+' " queryout "'+@data_file+'" -U "sa" -P "1234" -c -C 65001 -t "," -r \n'
print @sql
exec master..xp_cmdshell @sql
--Copy dummy file to passed CSV file
set @sql= 'exec master..xp_cmdshell ''type '+@data_file+' >> "'+@file_name+'"'''
print @sql
exec(@sql)
--Delete dummy file
set @sql= 'exec master..xp_cmdshell ''del '+@data_file+''''
print @sql
exec(@sql)
---------------- END DATA SECTION -------------------
END
- Dont forget to change sa password in script.
- Exported file will store in server side! Not client.