因用到的变量多,不想做成存储过程.同时因为两个结果有不同的列.
16 个解决方案
#1
bcp是指什么意思?
#2
Error = [Microsoft][ODBC SQL Server Driver]函数序列错误
??
??
#3
有sql命令在bcp中不能使用。
我加了个set nocount on可以加set fmtonly on就不行
我加了个set nocount on可以加set fmtonly on就不行
#4
--如果Excel文件不存在,也可以用BCP来导成类Excel的文件,注意大小写:
--导出表的情况
EXEC master..xp_cmdshell 'bcp 数据库名.dbo.表名 out "c:\test.xls" /c -/S"服务器名" /U"用户名" -P"密码"'
--导出查询的情况
EXEC master..xp_cmdshell 'bcp "SELECT au_fname, au_lname FROM pubs..authors ORDER BY au_lname" queryout "c:\test.xls" /c -/S"服务器名" /U"用户名" -P"密码"'
--导出表的情况
EXEC master..xp_cmdshell 'bcp 数据库名.dbo.表名 out "c:\test.xls" /c -/S"服务器名" /U"用户名" -P"密码"'
--导出查询的情况
EXEC master..xp_cmdshell 'bcp "SELECT au_fname, au_lname FROM pubs..authors ORDER BY au_lname" queryout "c:\test.xls" /c -/S"服务器名" /U"用户名" -P"密码"'
#5
EXEC master..xp_cmdshell 'bcp "set nocount on SELECT top 1 au_fname, au_lname FROM pubs..authors ORDER BY au_lname go SELECT top 2 au_fname, au_lname FROM pubs..authors ORDER BY au_lname go" queryout "c:\test.xls" /c -/S"服务器名" /U"用户名" -P"密码"'
这样导出的内容只是第一个select语句的内容,不包括后面一个语句的内容。现在我要的是两个结果合并成一个文件。
这样导出的内容只是第一个select语句的内容,不包括后面一个语句的内容。现在我要的是两个结果合并成一个文件。
#6
EXEC master..xp_cmdshell 'bcp "set nocount on;SELECT top 1 au_fname, au_lname FROM pubs..authors ORDER BY au_lname;SELECT top 2 au_fname, au_lname FROM pubs..authors ORDER BY au_lname go" queryout "c:\test.xls" /c -/S"服务器名" /U"用户名" -P"密码"'
如果还不行,就只能先导到临时表,再用bcp了
如果还不行,就只能先导到临时表,再用bcp了
#7
一样不行的。
#8
临时表没法用,我用的是生成xml的select语句
declare @cSql Varchar(200)
Select @cSql='bcp "select top 1 title_id from pubs..titles for xml auto,elements; select top 1 title_id from pubs..titles for xml auto,elements" queryout "c:\mail.xml" -c -q -S"127.0.0.1" -U"sa" -P"sa"'
--select @cSql
Exec Master..Xp_CmdShell @cSql
Exec Master..Xp_CmdShell 'type c:\mail.xml'
declare @cSql Varchar(200)
Select @cSql='bcp "select top 1 title_id from pubs..titles for xml auto,elements; select top 1 title_id from pubs..titles for xml auto,elements" queryout "c:\mail.xml" -c -q -S"127.0.0.1" -U"sa" -P"sa"'
--select @cSql
Exec Master..Xp_CmdShell @cSql
Exec Master..Xp_CmdShell 'type c:\mail.xml'
#9
怎么会没法用啊?
select * into #t from (select top 1 title_id from pubs..titles union all select top 1 title_id from pubs..titles) a
declare @cSql Varchar(200)
Select @cSql='bcp "select * from #t for xml auto,elements" queryout "c:\mail.xml" -c -q -S"127.0.0.1" -U"sa" -P"sa"'
--select @cSql
Exec Master..Xp_CmdShell @cSql
Exec Master..Xp_CmdShell 'type c:\mail.xml'
这样不行?
select * into #t from (select top 1 title_id from pubs..titles union all select top 1 title_id from pubs..titles) a
declare @cSql Varchar(200)
Select @cSql='bcp "select * from #t for xml auto,elements" queryout "c:\mail.xml" -c -q -S"127.0.0.1" -U"sa" -P"sa"'
--select @cSql
Exec Master..Xp_CmdShell @cSql
Exec Master..Xp_CmdShell 'type c:\mail.xml'
这样不行?
#10
declare @cSql Varchar(200)
Select @cSql='bcp "select top 1 title_id from pubs..titles for xml auto,elements union all select top 1 title_id from pubs..titles for xml auto,elements" queryout "c:\mail.xml" -c -q -S"127.0.0.1" -U"sa" -P"sa"'
--select @cSql
Exec Master..Xp_CmdShell @cSql
Exec Master..Xp_CmdShell 'type c:\mail.xml'
Select @cSql='bcp "select top 1 title_id from pubs..titles for xml auto,elements union all select top 1 title_id from pubs..titles for xml auto,elements" queryout "c:\mail.xml" -c -q -S"127.0.0.1" -U"sa" -P"sa"'
--select @cSql
Exec Master..Xp_CmdShell @cSql
Exec Master..Xp_CmdShell 'type c:\mail.xml'
#11
改;
declare @cSql Varchar(200)
Select @cSql='bcp "select top 1 title_id from pubs..titles union all select top 1 title_id from pubs..titles for xml auto,elements" queryout "c:\mail.xml" -c -q -S"127.0.0.1" -U"sa" -P"sa"'
--select @cSql
Exec Master..Xp_CmdShell @cSql
Exec Master..Xp_CmdShell 'type c:\mail.xml'
declare @cSql Varchar(200)
Select @cSql='bcp "select top 1 title_id from pubs..titles union all select top 1 title_id from pubs..titles for xml auto,elements" queryout "c:\mail.xml" -c -q -S"127.0.0.1" -U"sa" -P"sa"'
--select @cSql
Exec Master..Xp_CmdShell @cSql
Exec Master..Xp_CmdShell 'type c:\mail.xml'
#12
以上语句测试通过。问题是我的sql语句是希望这样的
select '<?xml version="1.0" encoding="gb2312"?>' As cXml union all select top 1 title_id from pubs..titles for xml auto,elements
但上面的语句是通不过的。
select '<?xml version="1.0" encoding="gb2312"?>' As cXml union all select top 1 title_id from pubs..titles for xml auto,elements
但上面的语句是通不过的。
#13
for xml auto,elements返回的不是记录集,所以不能用union all
我也想知道怎么插XML头文件.
帮你顶
我也想知道怎么插XML头文件.
帮你顶
#14
EXEC master..xp_cmdshell 'bcp "set nocount on SELECT top 1 au_fname, au_lname FROM pubs..authors ORDER BY au_lname go SELECT top 2 au_fname, au_lname FROM pubs..authors ORDER BY au_lname go" queryout "c:\test.xls" /c -/S"服务器名" /U"用户名" -P"密码"'
这样导出的内容只是第一个select语句的内容,不包括后面一个语句的内容。现在我要的是两个结果合并成一个文件。
--
好象你两句select都用的一个表,并且字段也相同的嘛,能不能做成一个view,然后bcp这个view呢?
反正view对bcp来说也是一个 "表" 嘛!
这样导出的内容只是第一个select语句的内容,不包括后面一个语句的内容。现在我要的是两个结果合并成一个文件。
--
好象你两句select都用的一个表,并且字段也相同的嘛,能不能做成一个view,然后bcp这个view呢?
反正view对bcp来说也是一个 "表" 嘛!
#15
实际上是有不同的字段。
#16
下面的是實現語句- 經過測試過的
master.dbo.xp_cmdshell 'bcp "select * from test2.dbo.a ,test2.dbo.b" queryout f:\kkp.txt -c -Sbe122 -Usa -P123'
-------select * from test2.dbo.a ,test2.dbo.b -- 是指sql查詢語句可以是多個表
-----Sbe122 是be122 服務器
-----Usa ---是sa用戶
master.dbo.xp_cmdshell 'bcp "select * from test2.dbo.a ,test2.dbo.b" queryout f:\kkp.txt -c -Sbe122 -Usa -P123'
-------select * from test2.dbo.a ,test2.dbo.b -- 是指sql查詢語句可以是多個表
-----Sbe122 是be122 服務器
-----Usa ---是sa用戶
#1
bcp是指什么意思?
#2
Error = [Microsoft][ODBC SQL Server Driver]函数序列错误
??
??
#3
有sql命令在bcp中不能使用。
我加了个set nocount on可以加set fmtonly on就不行
我加了个set nocount on可以加set fmtonly on就不行
#4
--如果Excel文件不存在,也可以用BCP来导成类Excel的文件,注意大小写:
--导出表的情况
EXEC master..xp_cmdshell 'bcp 数据库名.dbo.表名 out "c:\test.xls" /c -/S"服务器名" /U"用户名" -P"密码"'
--导出查询的情况
EXEC master..xp_cmdshell 'bcp "SELECT au_fname, au_lname FROM pubs..authors ORDER BY au_lname" queryout "c:\test.xls" /c -/S"服务器名" /U"用户名" -P"密码"'
--导出表的情况
EXEC master..xp_cmdshell 'bcp 数据库名.dbo.表名 out "c:\test.xls" /c -/S"服务器名" /U"用户名" -P"密码"'
--导出查询的情况
EXEC master..xp_cmdshell 'bcp "SELECT au_fname, au_lname FROM pubs..authors ORDER BY au_lname" queryout "c:\test.xls" /c -/S"服务器名" /U"用户名" -P"密码"'
#5
EXEC master..xp_cmdshell 'bcp "set nocount on SELECT top 1 au_fname, au_lname FROM pubs..authors ORDER BY au_lname go SELECT top 2 au_fname, au_lname FROM pubs..authors ORDER BY au_lname go" queryout "c:\test.xls" /c -/S"服务器名" /U"用户名" -P"密码"'
这样导出的内容只是第一个select语句的内容,不包括后面一个语句的内容。现在我要的是两个结果合并成一个文件。
这样导出的内容只是第一个select语句的内容,不包括后面一个语句的内容。现在我要的是两个结果合并成一个文件。
#6
EXEC master..xp_cmdshell 'bcp "set nocount on;SELECT top 1 au_fname, au_lname FROM pubs..authors ORDER BY au_lname;SELECT top 2 au_fname, au_lname FROM pubs..authors ORDER BY au_lname go" queryout "c:\test.xls" /c -/S"服务器名" /U"用户名" -P"密码"'
如果还不行,就只能先导到临时表,再用bcp了
如果还不行,就只能先导到临时表,再用bcp了
#7
一样不行的。
#8
临时表没法用,我用的是生成xml的select语句
declare @cSql Varchar(200)
Select @cSql='bcp "select top 1 title_id from pubs..titles for xml auto,elements; select top 1 title_id from pubs..titles for xml auto,elements" queryout "c:\mail.xml" -c -q -S"127.0.0.1" -U"sa" -P"sa"'
--select @cSql
Exec Master..Xp_CmdShell @cSql
Exec Master..Xp_CmdShell 'type c:\mail.xml'
declare @cSql Varchar(200)
Select @cSql='bcp "select top 1 title_id from pubs..titles for xml auto,elements; select top 1 title_id from pubs..titles for xml auto,elements" queryout "c:\mail.xml" -c -q -S"127.0.0.1" -U"sa" -P"sa"'
--select @cSql
Exec Master..Xp_CmdShell @cSql
Exec Master..Xp_CmdShell 'type c:\mail.xml'
#9
怎么会没法用啊?
select * into #t from (select top 1 title_id from pubs..titles union all select top 1 title_id from pubs..titles) a
declare @cSql Varchar(200)
Select @cSql='bcp "select * from #t for xml auto,elements" queryout "c:\mail.xml" -c -q -S"127.0.0.1" -U"sa" -P"sa"'
--select @cSql
Exec Master..Xp_CmdShell @cSql
Exec Master..Xp_CmdShell 'type c:\mail.xml'
这样不行?
select * into #t from (select top 1 title_id from pubs..titles union all select top 1 title_id from pubs..titles) a
declare @cSql Varchar(200)
Select @cSql='bcp "select * from #t for xml auto,elements" queryout "c:\mail.xml" -c -q -S"127.0.0.1" -U"sa" -P"sa"'
--select @cSql
Exec Master..Xp_CmdShell @cSql
Exec Master..Xp_CmdShell 'type c:\mail.xml'
这样不行?
#10
declare @cSql Varchar(200)
Select @cSql='bcp "select top 1 title_id from pubs..titles for xml auto,elements union all select top 1 title_id from pubs..titles for xml auto,elements" queryout "c:\mail.xml" -c -q -S"127.0.0.1" -U"sa" -P"sa"'
--select @cSql
Exec Master..Xp_CmdShell @cSql
Exec Master..Xp_CmdShell 'type c:\mail.xml'
Select @cSql='bcp "select top 1 title_id from pubs..titles for xml auto,elements union all select top 1 title_id from pubs..titles for xml auto,elements" queryout "c:\mail.xml" -c -q -S"127.0.0.1" -U"sa" -P"sa"'
--select @cSql
Exec Master..Xp_CmdShell @cSql
Exec Master..Xp_CmdShell 'type c:\mail.xml'
#11
改;
declare @cSql Varchar(200)
Select @cSql='bcp "select top 1 title_id from pubs..titles union all select top 1 title_id from pubs..titles for xml auto,elements" queryout "c:\mail.xml" -c -q -S"127.0.0.1" -U"sa" -P"sa"'
--select @cSql
Exec Master..Xp_CmdShell @cSql
Exec Master..Xp_CmdShell 'type c:\mail.xml'
declare @cSql Varchar(200)
Select @cSql='bcp "select top 1 title_id from pubs..titles union all select top 1 title_id from pubs..titles for xml auto,elements" queryout "c:\mail.xml" -c -q -S"127.0.0.1" -U"sa" -P"sa"'
--select @cSql
Exec Master..Xp_CmdShell @cSql
Exec Master..Xp_CmdShell 'type c:\mail.xml'
#12
以上语句测试通过。问题是我的sql语句是希望这样的
select '<?xml version="1.0" encoding="gb2312"?>' As cXml union all select top 1 title_id from pubs..titles for xml auto,elements
但上面的语句是通不过的。
select '<?xml version="1.0" encoding="gb2312"?>' As cXml union all select top 1 title_id from pubs..titles for xml auto,elements
但上面的语句是通不过的。
#13
for xml auto,elements返回的不是记录集,所以不能用union all
我也想知道怎么插XML头文件.
帮你顶
我也想知道怎么插XML头文件.
帮你顶
#14
EXEC master..xp_cmdshell 'bcp "set nocount on SELECT top 1 au_fname, au_lname FROM pubs..authors ORDER BY au_lname go SELECT top 2 au_fname, au_lname FROM pubs..authors ORDER BY au_lname go" queryout "c:\test.xls" /c -/S"服务器名" /U"用户名" -P"密码"'
这样导出的内容只是第一个select语句的内容,不包括后面一个语句的内容。现在我要的是两个结果合并成一个文件。
--
好象你两句select都用的一个表,并且字段也相同的嘛,能不能做成一个view,然后bcp这个view呢?
反正view对bcp来说也是一个 "表" 嘛!
这样导出的内容只是第一个select语句的内容,不包括后面一个语句的内容。现在我要的是两个结果合并成一个文件。
--
好象你两句select都用的一个表,并且字段也相同的嘛,能不能做成一个view,然后bcp这个view呢?
反正view对bcp来说也是一个 "表" 嘛!
#15
实际上是有不同的字段。
#16
下面的是實現語句- 經過測試過的
master.dbo.xp_cmdshell 'bcp "select * from test2.dbo.a ,test2.dbo.b" queryout f:\kkp.txt -c -Sbe122 -Usa -P123'
-------select * from test2.dbo.a ,test2.dbo.b -- 是指sql查詢語句可以是多個表
-----Sbe122 是be122 服務器
-----Usa ---是sa用戶
master.dbo.xp_cmdshell 'bcp "select * from test2.dbo.a ,test2.dbo.b" queryout f:\kkp.txt -c -Sbe122 -Usa -P123'
-------select * from test2.dbo.a ,test2.dbo.b -- 是指sql查詢語句可以是多個表
-----Sbe122 是be122 服務器
-----Usa ---是sa用戶