日期:2014-05-18  浏览次数:20495 次

哎,BCP 来个会的。
我表示,对用语句输出文件无语了。不知道哪里错了。

SQL code

--这个一执行出来吧,全是BCP的说明信息
exec master..xp_cmdshell
'bcp testt.dbo.TABLENAME out g:\abc.xls -c -q -s "OO_XXJJEE" -u "administrator" -p "123456"'
--这个是说SA登录失败。我用ADMIN也不行
EXEC master..xp_cmdshell 'bcp "SELECT TOP 20 * FROM testt.dbo.TABLENAME " queryout c:\currency2.xls -c -U "sa" -P""' 
--同上
EXEC master..xp_cmdshell 'bcp 数据库名.dbo.表名 out D:\Temp.xls -c -q -S "Localhost" -U "sa" -P ""' 





高手们阿。怎么整这个问题。

------解决方案--------------------
探讨
为何不试试用-T登录试试

------解决方案--------------------
探讨
引用:
SQL code

-- -S -U -P必须大写
exec master..xp_cmdshell
'bcp testt.dbo.TABLENAME out g:\abc.xls -c -q -S "OO_XXJJEE" -U "administrator" --P "123456"'

--第二句缺 -S 还有-P 密码为空值
……

------解决方案--------------------
SQL code

/******* 导出到excel */
EXEC master..xp_cmdshell 'bcp SettleDB.dbo.shanghu out c:\temp1.xls -c -q -S"GNETDATA/GNETDATA" -U"sa" -P""' 

/*********** 导入Excel */
SELECT * 
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0', 
'Data Source="c:\test.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions 

/*动态文件名 
declare @fn varchar(20),@s varchar(1000) 
set @fn = 'c:\test.xls' 
set @s ='''Microsoft.Jet.OLEDB.4.0'', 
''Data Source="'+@fn+'";User ID=Admin;Password=;Extended properties=Excel 5.0''' 
set @s = 'SELECT * FROM OpenDataSource ('+@s+')...sheet1$' 
exec(@s) 
*/ 

SELECT cast(cast(科目编号 as numeric(10,2)) as nvarchar(255))+' ' 转换后的别名 
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0', 
'Data Source="c:\test.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions 

/********************** EXCEL导到远程SQL */
insert OPENDATASOURCE( 
'SQLOLEDB', 
'Data Source=远程ip;User ID=sa;Password=密码' 
).库名.dbo.表名 (列名1,列名2) 
SELECT 列名1,列名2 
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0', 
'Data Source="c:\test.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions