Save SELECT query output to a text file

Ever needed to save the result of your SELECT query to a text file. Well use xp_cmdshell. xp_cmdshell is an extended stored procedure kept in the master database. It issues OS commands directly to the Windows command shell. You need to be a member of the sys_admin group to use this command or have the xp_sqlagent_proxy_account.

To save your SELECT query results to a text file, use this query :

EXEC master..xp_cmdshell'bcp "SELECT TOP 5 CUSTOMERID FROM Northwind.dbo.Customers" queryout "c:\text.txt" -c -T -x'

One word of caution. xp_cmdshell operates synchronously. So the caller has to wait for the control to be returned to him/her until the command-shell command is completed.

Note: By default, xp_cmdshell is disabled in SQL 2005 for security reasons. To enable it, use the Surface Area Configuration tool or sp_configure. To enable xp_cmdshell using sp_configure, use this query :

EXEC master.dbo.sp_configure 'show advanced options', 1
RECONFIGURE
EXEC master.dbo.sp_configure 'xp_cmdshell', 1
RECONFIGURE

5 comments:

  1. Thanks for the blog. I went through quite a few pages before your page until i got bcp working :)

    ReplyDelete
  2. Thanks, This is just what I was looking for to help my coding be quite a bit simpler.

    I appreciate the help!

    Thanks,
    -jon

    ReplyDelete
  3. Thank for the blog. But How I can include the titles of the tables in the text file?

    ReplyDelete
  4. Thanks for the blog. :)

    ReplyDelete
  5. Can you please let me know if we can write a script to copy the result messages(which are displayed in Results Pane) and write it to a file .

    ReplyDelete