我想将一个表的数据导出到txt中,用户名sa,无密码EXEC master..xp_cmdshell 'bcp "SELECT au_fname, au_lname FROM pubs..authors ORDER BY au_lname" queryout c:\za.txt -c -U"sa"'
结果是
密码: 
NULL
开始复制...
NULL
已复制了 23 行。
数据包的大小(字节): 4096
时钟时间(毫秒): 共      1
NULLc:\za.txt也没导出数据,请问错在哪里?

解决方案 »

  1.   

    b.BCP 它常用于将大量的数据从另外的程序转移到SQL SERVER表中。当然也可以用于将表中数据传输到数据文件中。下面是一些BCP的简单用法(关于很多的选项使用看相关文档)  --前序,开启xp_cmdshell --关于xp_cmdshell的一些知识请看http://blog.csdn.net/feixianxxx/archive/2009/08/14/4445603.aspxEXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;--环境create table test(id int,value varchar(100))goinsert test values(1,'s1')insert test values(2,'s2')insert test values(3,'s3')insert test values(4,'s4')go--1将表的数据导出到TEXT.txt文件中exec master..xp_cmdshell 'bcp tempdb.dbo.test out e:\test.txt -c  -Usa -P123456'--如果是WINDOWS身份直接xec master..xp_cmdshell 'bcp tempdb.dbo.test out e:\test.txt -T -c'
    --2将TEXT.txt文件中的数据复制到test1表select * into test1 from test where 1=2exec master..xp_cmdshell 'bcp tempdb.dbo.test1 in e:\test.txt -c  -Usa -P123456'select * from test1
    --3将TEST表的ID字段复制到TEXT.txt中exec master..xp_cmdshell 'bcp "SELECT id FROM tempdb.dbo.test" queryout e:\test.dat -T -c'
    --4将test表中的第一行移动到text.txt中exec master..xp_cmdshell 'bcp "SELECT top 1 * from tempdb.dbo.test "  queryout e:\test.txt -c  -Usa -P123456'
    --关闭xp_cmdshellEXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 0;RECONFIGURE;
      

  2.   

    EXEC master..xp_cmdshell 'bcp "SELECT au_fname, au_lname FROM pubs..authors ORDER BY au_lname" queryout c:\za.txt -c -U"sa" -P密码'
      

  3.   

    参考这个帖子的4楼
    http://topic.csdn.net/u/20100409/08/0CC783DE-2695-4444-8662-672AB6AEEFCE.html
      

  4.   

    好像可以这么解释xp_cmdshell 是在服务器上执行cmd的命令操作如果要在本机执行,就得用cmd,然后bcp。
    bcp "SELECT au_fname, au_lname FROM pubs..authors ORDER BY au_lname" queryout c:\za.txt -c -S"192.168.1.2" -U"sa"
      

  5.   

    如果没有做盘附映射,所有操作的SQL语句,导入导出都是针对服务器本地。