Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

xuất dữ liệu bảng đã chèn sang tệp .txt trong máy chủ SQL

Bạn có thể tạo một bảng khác để lưu trữ tạm thời các kết quả từ INSERTED trước khi gọi bcp .

create trigger monitorTrigger on test 
AFTER insert 
as
declare @sql varchar(8000)

--delete it every time
TRUNCATE TABLE test2.dbo.tempInserted

--populate it from inserted
INSERT INTO test2.dbo.tempInserted
SELECT * FROM INSERTED

--use it in bcp
SELECT @sql = 'bcp "select * from test2.dbo.tempInserted" queryout I:\File\mytest.txt -c -t -T -S YAMUNA\SQLEXPRESS'

exec xp_cmdshell @sql

CHỈNH SỬA: Rõ ràng điều này sẽ không hoạt động, vì bảng tempInserted bị khóa tại thời điểm bcp được gọi là.

Đây là một ý tưởng thay thế, có thể không phải là giải pháp thanh lịch nhất nhưng sẽ hiệu quả (nếu bạn không sử dụng phiên bản nhanh). Bạn có thể sử dụng trình kích hoạt chỉ để lưu trữ dữ liệu đã chèn vào bảng này và bạn có thể tạo một công việc chạy định kỳ (giả sử cứ sau 5 phút) và đọc từ bảng đó, sao chép vào tệp và xóa.

Vì vậy, trình kích hoạt sẽ chỉ là:

create trigger monitorTrigger on test 
AFTER insert 
as
BEGIN
  INSERT INTO test2.dbo.tempInserted
  SELECT * FROM INSERTED
END

và Thủ tục đã lưu trữ để sao chép vào tệp - mà bạn có thể chạy từ công việc:

CREATE PROC transferToFile 
AS
BEGIN
 declare @sql varchar(8000)

 SELECT @sql = 'bcp "select * from test2.dbo.tempInserted" queryout I:\File\mytest.txt -c -t -T -S YAMUNA\SQLEXPRESS'

 exec xp_cmdshell @sql

 --delete at the end
 TRUNCATE TABLE test2.dbo.tempInserted
END


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. sql server 2008 cho phép sa tài khoản

  2. SSIS xuất dữ liệu sang tệp phẳng hiển thị dấu ngoặc kép dưới dạng ký tự thập lục phân

  3. Làm thế nào để sửa lỗi Microsoft SQL Server Error 926? - Đã giải quyết

  4. Cách sử dụng tham số với LIKE trong Sql Server Compact Edition

  5. Làm thế nào để bạn tạo phiên bản trong Nhibernate?