请教:SqlServer 2012 如何把excel内容追加到现有表中。

langtaoim 2016-06-19 03:45:34
工作中经常需要把各个部门科室报上来的若干个excel表添加到数据库的一个表中去(两者字段相同),请问各位大神有什么好办法便捷快速的完成。

win7 x64, excel2013 x64, sql server2012 x64
数据库和表都在本地计算机;

为了测试我做了一个模拟数据库如下:
数据库:test1,表:friend,字段:name, age(初始记录为空)
excel表:d:\test\friendtest.xlsx, sheet1, 字段:name, age, 随便录入了两行记录。

多谢了!
...全文
388 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Beyond熊千海 2019-07-05
  • 打赏
  • 举报
回复
消息 7302,级别 16,状态 1,第 5 行
无法创建链接服务器“(null)”的 OLE DB 访问接口“Microsoft.ACE.OLEDB.12.0”的实例。

中国风的兄弟的方式,都是无法创建接口,看了要先解决创建接口的问题
langtaoim 2016-06-22
  • 打赏
  • 举报
回复
启发很大的~~~~~~~多谢。。。。。。。。。。。。
中国风 2016-06-20
  • 打赏
  • 举报
回复
语句可用以下方式 导入试试
--> Jet 引擎访问 Excel Roy   
select * from OpenRowSet('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;HDR=Yes;IMEX=1;Database=D:\Roy.xls', 'select * from [Sheet1$]')   
select * from OpenRowSet('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;HDR=Yes;IMEX=1;Database=D:\Roy.xls', [Sheet1$])   
select * from OpenDataSource('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;HDR=Yes;IMEX=1;Database=D:\Roy.xls')...[Sheet1$]   
select * from OpenDataSource('Microsoft.Jet.OLEDB.4.0', 'Data Source=D:\Roy.xls;Extended Properties="Excel 8.0;HDR=Yes;IMEX=1"')...[Sheet1$]   
  
--> ACE 引擎访问 Excel 97-2003   
select * from OpenRowSet('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;HDR=Yes;IMEX=1;Database=D:\Roy.xls', 'select * from [Sheet1$]')   
select * from OpenRowSet('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;HDR=Yes;IMEX=1;Database=D:\Roy.xls', [Sheet1$])   
select * from OpenDataSource('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;HDR=Yes;IMEX=1;Database=D:\Roy.xls')...[Sheet1$]   
select * from OpenDataSource('Microsoft.ACE.OLEDB.12.0', 'Data Source=D:\Roy.xls;Extended Properties="Excel 12.0;HDR=Yes;IMEX=1"')...[Sheet1$]   
  
--> ACE 引擎访问 Excel 2007   
select * from OpenRowSet('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;HDR=Yes;IMEX=1;Database=D:\Roy.xlsx', 'select * from [Sheet1$]')   
select * from OpenRowSet('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;HDR=Yes;IMEX=1;Database=D:\Roy.xlsx', [Sheet1$])   
select * from OpenDataSource('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;HDR=Yes;IMEX=1;Database=D:\Roy.xlsx')...[Sheet1$]   
select * from OpenDataSource('Microsoft.ACE.OLEDB.12.0', 'Data Source=D:\Roy.xlsx;Extended Properties="Excel 12.0;HDR=Yes;IMEX=1"')...[Sheet1$]
中国风 2016-06-20
  • 打赏
  • 举报
回复

在企业管理器,导入选择office2013看看

不行时用ACCESS引擎的方式导入,曾经试过可导入xlsx格式文件
中国风 2016-06-20
  • 打赏
  • 举报
回复
EXEC sp_configure 'show advanced option', '1';
RECONFIGURE
EXEC sys.sp_configure @configname = 'Ad Hoc Distributed Queries' , -- varchar(35)
    @configvalue = 1 -- int
RECONFIGURE
启用分布式查询
langtaoim 2016-06-20
  • 打赏
  • 举报
回复
多谢指导! 运行后提示: 消息 15281,级别 16,状态 1,第 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”。 查网上信息,貌似不是语法或参数问题: 由于64位操作系统不支持Microsoft OLE DB Provider for Jet驱动程序。。。。。。。。。。 困惑~~~
kingtiy 2016-06-19
  • 打赏
  • 举报
回复
可以使用openrowset 函数读取本地excel文件 类似于: select * from openrowset ( 'Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=d:\test\friendtest.xlsx', 'select * from [sheet1$]' ) 具体的方法可以参考下这位大大的博客. http://www.cnblogs.com/oneword/archive/2009/12/14/1623586.html

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧