zoukankan
html css js c++ java
SQL Server表与Excel、Access数据互导
1、SQL Server导出为Excel:
要用T-SQL语句直接导出至Excel工作薄,就不得不用借用SQL Server管理器的一个扩展存储过程:xp_cmdshell,此过程的作用为“以操作系统命令行解释器的方式执行给定的命令字符串,并以文本行方式返回任何输出。”下面为定义示例:
EXEC master..xp_cmdshell 'bcp 库名.dbo.表名out c:\Book3.xls -c -q -S"servername" -U"sa" -P""'
--参数:S 是SQL服务器名;U是用户名;P是密码,没有就空着
--说明:其实用这个过程导出的格式实质上就是文本格式的,不信的话在导出的Excel表中改动一下再保存看看。
实际例子与说明如下:
/*如果要将表整个导出至Excel的话*/
EXEC master..xp_cmdshell 'bcp northwind.dbo.orders out c:\Book1.xls -c -q -S"(local)" -U"sa" -P""'
--注意句中的northwind.dbo.orders,为数据库名+拥有者+表名
--直接导出用“out”关健字
-------------------------------------------
/*如果要利用查询来导出部分字段至Excel的话*/
EXEC master..xp_cmdshell 'bcp "SELECT orderid,cutomerid,freight FROM northwind..orders ORDER BY orderid" queryout C:\ Book2.xls -c -S"(local)" -U"sa" -P""'
--这里在bcp后面加了一个查询语句,并用双引号括起来
--利用查询要用“queryout”关键字
2、Excel导入SQL Server表:
在SQL Server中,有定义一个OpenDateSource函数,用于引用那些不经常访问的 OLE DB 数据源,而我们的数据互导操作,就是建立在这个函数之上。
首先看一个T-SQL帮助中的示例,描述如下:
--下面是个查询的示例,它通过用于 Jet 的 OLE DB 提供程序查询 Excel 电子表格。
SELECT *
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\Finance\account.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions
如果你直接引用这个示例进行查询,那么肯定是通不过的。关键在于语句中的两个地方需要修改,一处在于Data Source处,双引号内为Excel表格的实际存放位置,要修改为你想查询的Excel表实际完整路径;二为最后的...xactions,其实这里代表的是要进行的某些动作,下面会讲,这里修改成用中括号包围的Excel表中工作表名字(加上一个$)就可以了,如[Sheet1$]。当然,还可以将Excel 5.0改为Excel 8.0,因为5.0是以前的老版本了。
下面是实例说明:
/*1、插入Excel中的资料到现存的sql数据库表中(假设C盘有excel表book2.xls,book2.xls中有个工作表sheet1,sheet1中有两列id和FName;而同时sql数据库中也有一个表test):*/
insert into test SELECT id,FName
FROM OpenDataSource('Microsoft.Jet.OLEDB.4.0','Data Source="c:\book2.xls";User ID=Admin;Password=;Extended properties=Excel 8.0')...[sheet1$]
--如果用select * ,则列的次序会乱,资料内容也会乱,无法插入成功,所以指定列名
-----------------------
/*2、插入excel表中资料到sql数据库并新建一个sql表(excel的定义和内容同上):*/
select convert(int,id)as id,FName into test7
FROM OpenDataSource('Microsoft.Jet.OLEDB.4.0','Data Source="c:\book2.xls";User ID=Admin;Password=;Extended properties=Excel 8.0')...[sheet1$]
--在select 列中最好用convert进行显示类型转换,否则资料类型会不如预期。
而Access和Excel的基本一样,只是要去掉Extended properties声明。
查看全文
相关阅读:
哈尔滨理工大学第七届程序设计竞赛决赛(网络赛-高年级组)I
哈尔滨理工大学第七届程序设计竞赛决赛(网络赛-高年级组)F
哈尔滨理工大学第七届程序设计竞赛决赛(网络赛-高年级组)H
哈尔滨理工大学第七届程序设计竞赛决赛(网络赛-高年级组)E
哈尔滨理工大学第七届程序设计竞赛决赛(网络赛-高年级组)G
哈尔滨理工大学第七届程序设计竞赛决赛(网络赛-高年级组)C
哈尔滨理工大学第七届程序设计竞赛决赛(网络赛-高年级组)D
哈尔滨理工大学第七届程序设计竞赛决赛(网络赛-高年级组)A
哈尔滨理工大学第七届程序设计竞赛决赛(网络赛-高年级组)B
HDU 6187 Destroy Walls
原文地址:https://www.cnblogs.com/Magicam/p/1380690.html
最新文章
UVA 12338:Anti-Rhyme Pairs(后缀数组+ST表)
BZOJ 1513 [POI2006]Tet-Tetris 3D(二维线段树)
Codeforces 741B Arpa's weak amphitheater and Mehrdad's valuable Hoses
BZOJ 4653 [Noi2016]区间(Two pointers+线段树)
POJ 2404 Jogging Trails(最小权完美匹配)
BZOJ 2073 [POI2004]PRZ(状压DP)
BZOJ 3437 小P的牧场(斜率优化DP)
BZOJ 1633 [Usaco2007 Feb]The Cow Lexicon 牛的词典(单调DP)
BZOJ 4027:[HEOI2015]兔子与樱花(贪心+树形DP)
BZOJ 1040:[ZJOI2008]骑士(环套外向树+树形DP)
热门文章
BZOJ 3450 Tyvj1952 Easy(期望)
BZOJ 2084 [Poi2010]Antisymmetry(manacher)
BZOJ 2789 letters(树状数组)
BZOJ 3289 Mato的文件管理(莫队+树状数组)
BZOJ 1042:[HAOI2008]硬币购物(容斥原理+DP)
BZOJ 2809 [Apio2012]dispatching(斜堆+树形DP)
2017年浙江中医药大学大学生程序设计竞赛(重现赛)B
2017年浙江中医药大学大学生程序设计竞赛(重现赛)H
2017年浙江中医药大学大学生程序设计竞赛(重现赛)A
2017年浙江工业大学大学生程序设计迎新赛预赛 H
Copyright © 2011-2022 走看看