Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

SQL सर्वर में .txt फ़ाइल में सम्मिलित तालिका डेटा निर्यात करें

आप INSERTED . से परिणामों को अस्थायी रूप से संग्रहीत करने के लिए एक और तालिका बना सकते हैं कॉल करने से पहले 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

संपादित करें: जाहिरा तौर पर यह काम नहीं करेगा, क्योंकि तालिका tempInserted समय पर लॉक है bcp कहा जाता है।

यहां एक वर्कअराउंड विचार है, शायद सबसे सुंदर समाधान नहीं है, लेकिन काम करना चाहिए (यदि आप एक्सप्रेस संस्करण पर नहीं हैं)। आप इस तालिका में सम्मिलित डेटा को संग्रहीत करने के लिए ट्रिगर का उपयोग कर सकते हैं और आप एक नौकरी बना सकते हैं जो समय-समय पर चलती है (हर 5 मिनट में कहें) और उस तालिका से पढ़ें, फ़ाइल में कॉपी करें और हटाएं।

तो ट्रिगर बस होगा:

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

और फ़ाइल में कॉपी करने की संग्रहीत प्रक्रिया - जिसे आप नौकरी से चला सकते हैं:

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 सर्वर 2012/2014 में छिपे हुए प्रदर्शन और प्रबंधनीयता में सुधार

  2. SQL सर्वर में त्रुटि और लेनदेन को लागू करना

  3. डेटाबेस में डुप्लिकेट अस्थायी रिकॉर्ड मर्ज करें

  4. SQL सर्वर में टेबल-वैल्यूड फंक्शन बनाएं

  5. SQL सर्वर एकाधिक पंक्ति प्रविष्टियों पर काम करने के लिए एक ट्रिगर