SQL SERVER数据导入到EXCEL

 1、在SQL SERVER里往Excel插入数据

 2、将SQL SERVER中查询到的数据导成一个Excel文件

 

  

1、在SQL SERVER里往Excel插入数据

INSERT INTO OPENDATASOURCE('MICROSOFT.JET.OLEDB.4.0',
	'Excel 5.0;DATABASE=c:\book1.xls' )...[Sheet1$] 
	SELECT [BlogID],[Title]   FROM   [库名].[dbo].[Blog]

可能会遇到的问题:

1、"SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT 'OpenRowset/OpenDatasource' 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用 sp_configure 启用 'Ad Hoc Distributed Queries'。有关启用 'Ad Hoc Distributed Queries' 的详细信息,请参阅 SQL Server 联机丛书中的 "外围应用配置器"。"

解决:

--启用Ad Hoc Distributed Queries:
exec sp_configure 'show advanced options',1
reconfigure
exec sp_configure 'Ad Hoc Distributed Queries',1
reconfigure
    
--使用完成后,关闭Ad Hoc Distributed Queries:
exec sp_configure 'Ad Hoc Distributed Queries',0
reconfigure
exec sp_configure 'show advanced options',0
reconfigure

 

2、"列名或所提供值的数目与表定义不匹配。"

解决:在book1.xls的Sheet1中必须有和excel表相对应的字段,否则会出错。可在插入前查询EXCEL表结构。

/*查看 xls表结构*/ 
SELECT * 
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
  'Data Source="c:\book1.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[SHEET1$]

 

3、"消息 7399,级别 16,状态 1,第 2 行
链接服务器 "(null)" 的 OLE DB 访问接口 "Microsoft.Jet.OLEDB.4.0" 报错。提供程序未给出有关错误的任何信息。
消息 7303,级别 16,状态 1,第 2 行
无法初始化链接服务器 "(null)" 的 OLE DB 访问接口 "Microsoft.Jet.OLEDB.4.0" 的数据源对象。"

解决:确保已经该xls文件已经关闭。

 

 

2、将SQL SERVER中查询到的数据导成一个Excel文件

 EXEC master..xp_cmdshell 	
    'bcp "SELECT BlogID ,Title FROM [库名].[dbo].[Blog]"  queryout   c:\temp1.xls -c -q -S"6350BFDFB9DD413" -U"sa" -P"sa_123"'

/*
output
-----------------------------------------------------------------------------------------------------------
NULL
开始复制...
NULL
已复制 8 行。
网络数据包大小(字节): 4096
总时钟时间(毫秒)     : 1      平均值: (每秒 8000.00 行。)
NULL

(7 行受影响)
*/

可能会遇到的问题:

1、"SQL Server 阻止了对组件 'xp_cmdshell' 的 过程 'sys.xp_cmdshell' 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用 sp_configure 启用 'xp_cmdshell'。有关启用 'xp_cmdshell' 的详细信息,请参阅 SQL Server 联机丛书中的 "外围应用配置器"。"

解决:

/*允许*/
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;
RECONFIGURE;

/*关闭*/
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 0;
RECONFIGURE;

 

2、"复制方向必须是 'in'、'out' 或 'format'。
  用法: bcp {dbtable | query} {in | out | queryout | format} 数据文件"

解决:都是双引号,还有所有代码都放在一行,不允许回车或者换行

 

 

引用自:

SQL SERVER 与ACCESS、EXCEL的数据转换  http://www.microsoft.com/china/community/column/31.mspx

SQL Server 阻止了对组件 ''Ad Hoc Distributed Queries'' 的 STATEMENT''OpenRowset/OpenDatasource'' 的访问

导入EXCEL数据到SQL  http://topic.csdn.net/u/20091213/19/72280C51-B7D8-43E0-9964-A7142604F0B9.html

bcp 执行老是 提示 复制方向必须是 'in'、'out' 或 'format'。那位高手指教一下

转载于:https://www.cnblogs.com/kiant71/archive/2010/06/27/1766343.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值