常见SQL Server导入导出数据的几个工具
摘自:http://www.cnblogs.com/chenxizhang/archive/2011/06/09/2076542.html
在我们的日常工作中,与数据库打交道的机会越来越多。这一篇文章我整理一下常见的SQL Server导入导出数据的几个工具
1. 数据导入导出向导
这是一个可视化的工具,我放在首位,是由于它可以极大灵活地满足导入导出功能,而且是所见即所得的,易于使用。
启动数据导入导出向导的方式有好多种,我自己习惯直接通过如下的命令启动(开始=》运行)
dtswizard(顾名思义,它是一个wizard——向导,而且是与dts——data transfomation service有关的)
从下图可以看出,这个工具支持多种不同类型的数据源(以及数据目标),它其实不仅仅限于SQL Server服务器。
![]()
![]()
【注意】如果是64位,这里的提供程序中找不到Excel和Access(我知道很多朋友都想导出这两种格式)
该向导还可以通过在SQL Server Management Studio(SSMS)中启动。如果数据源或者数据目标是SQL Server的话,这是更加方便一些的。
![]()
【注意】通过这样的方式启动的向导,却又可以看到Excel和Access(很神奇吧,
)
![]()
值得一提的是,这个导入导出向导还有一个好处,就是将我们经常需要导入导出的操作保存起来,如下图所示
![]()
这里有一个所谓的SSIS Package,是什么意思呢?SSIS指的是SQL Server Integration Service,它是微软SQL Server BI平台的一个重要组件,用来设计和管理ETL解决方案。
这个SSIS Package是一个扩展名为dtsx的特殊文件包,它可以通过一个所谓的Business Intelligence Developement Studio(BI Studio)打开查看,并且还可以进一步地编辑
![]()
![]()
【备注】SSIS的讨论已经超出了本篇文章的范围。如有兴趣,请搜索我其他的文章。
2.BCP
如果你要实现简单的数据导入导出,并且希望用脚本命令的方式,而不是图形界面来实现。那么可以考虑SQL Server提供的BCP实用工具。
![]()
![]()
上图演示了如何将一个表导出为Excel文件,但如果想要根据一个查询导出的话,则可以按照下面这样的语法
![]()
使用BCP也可以进行数据,只要将out改成In即可。
【注意】使用bcp导出数据最大一个问题就是没有标题行
![]()
3. Bulk Insert和OpenRowSet
如果想在T-SQL中直接导入Excel文件的数据,或者TXT文件的数据,则可以了解一下如下两个特殊的T-SQL语法
BulkInsert的语法大致如下
![]()
OpenRowSet的语法大致如下
![]()
【备注】关于这两个语句的详细用法,请参考SQL Server自带的联机丛书。
4.FORXML和OPENXML
如果想要导出导入XML格式的数据,则可以了解一下FORXML和OPENXML语法(它们是T-SQL语法,所以也可以很灵活地嵌入在我们的存储过程中)
USE Northwind
GO SELECT * FROM Orders
FOR XML RAW('OrderItem'),
ELEMENTS XSINIL,
ROOT('Orders')
上面的语法,可以将查询用XML格式返回,如下图所示
![]()
【备注】FOR XML是SELECT的一个子句,有关更多用法,请参考SQL Server自带的联机丛书
【备注】导出为XML格式的目的是为了更好地在不同应用程序之间共享。
反过来,如果我们得到了一段XML数据,想将其导入到SQL Server中某个表中。可以考虑用OPENXML的语法。它的作用就是将XML还原为行集数据,然后就可以插入到我们的目的表中去了。
DECLARE @x XML
DECLARE @docHandle int SET @x=N'<Orders xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<OrderItem>
<OrderID>10248</OrderID>
<CustomerID>VINET</CustomerID>
<EmployeeID>3</EmployeeID>
<OrderDate>1996-07-04T00:00:00</OrderDate>
<RequiredDate>1996-08-01T00:00:00</RequiredDate>
<ShippedDate>1996-07-16T00:00:00</ShippedDate>
<ShipVia>3</ShipVia>
<Freight>32.3800</Freight>
<ShipName>Vins et alcools Chevalier</ShipName>
<ShipAddress>59 rue de lAbbaye</ShipAddress>
<ShipCity>Reims</ShipCity>
<ShipRegion xsi:nil="true" />
<ShipPostalCode>51100</ShipPostalCode>
<ShipCountry>France</ShipCountry>
</OrderItem>
<OrderItem>
<OrderID>10249</OrderID>
<CustomerID>TOMSP</CustomerID>
<EmployeeID>6</EmployeeID>
<OrderDate>1996-07-05T00:00:00</OrderDate>
<RequiredDate>1996-08-16T00:00:00</RequiredDate>
<ShippedDate>1996-07-10T00:00:00</ShippedDate>
<ShipVia>1</ShipVia>
<Freight>11.6100</Freight>
<ShipName>Toms Spezialitäten</ShipName>
<ShipAddress>Luisenstr. 48</ShipAddress>
<ShipCity>Münster</ShipCity>
<ShipRegion xsi:nil="true" />
<ShipPostalCode>44087</ShipPostalCode>
<ShipCountry>Germany</ShipCountry>
</OrderItem></Orders>' --第一步,做准备
EXEC SP_XML_PREPAREDOCUMENT @docHandle OUTPUT,@x
--第二步,openxml
INSERT Orders SELECT * FROM OPENXML(@docHandle,N'/Orders/OrderItem',2) WITH Orders
--第三步,销毁
EXEC sp_xml_removedocument @docHandle
【备注】OPENXML还有其他更加复杂的用法,请参考SQL Server自带的联机丛书
5.使用Excel导出数据,或者建立查询
最后介绍一种更加简单的方法,如果经常需要在Excel中进行数据库查询,并且据此做一些进一步的分析。最好的方法是在Excel中直接去导出数据,或者建立查询
![]()
![]()
![]()
![]()
![]()
![]()
这个做法的好处,是可以在现有Excel中,任何位置放置你需要的数据,而且需要注意的是,这些数据是链接到数据库的,也就是说,如果数据库的数据发生了更新,则只要刷新一下就可以了。
常见SQL Server导入导出数据的几个工具的更多相关文章
- SQL Server导入导出不丢主键和视图的方法
SQL Server导入导出 SQL Server 导入导出 工具/原料 使用Microsoft SQL Server Management Studio 导入导出数据. 直接使用Microsoft ...
- SQL Server 2008 导出数据与导入数据任务介绍
一. 实例数据库介绍 源数据库Test_Other_DB:存在tb_Class,tb_Student,tb_TestTable三张表. 目标数据库TestDB_Output:空库,不含任何表. 二. ...
- sql server 2005导出数据到oracle
一. 在sql server下处理需要导出的数据库 1. 执行以下sql,查出所有'float'类型的字段名,手动将float类型改为decimal(18,4). select 表名=d.name,字 ...
- (4.10)sql server导入导出
SQL Server快速导入数据分享 核心参考:官网~~https://docs.microsoft.com/zh-cn/sql/relational-databases/import-export/ ...
- SQL Server 2008导出数据为SQL脚本的操作步骤
以前我们要将一个表中的数据导出为脚本,那么只有在网上找一个导出数据的Script,然后运行就可以导出数据脚本了.现在在SQL Server 2008的Management Studio中增加了一个新特 ...
- sql server导入excel数据
1.sql导入工具,数据源选择 microsoft excel 2.有odbc配置过的连接excel或其他数据库,都可以选择netframwork data provider for odbc,在ds ...
- SQL Server 导入大数据脚本
.先使用win+r运行cmd .执行osql -S DESKTOP-RGBEDS3 -U sa -P liyang -d FGCPOE_十院 -i D:\数据库\script.sql 即可!
- SQL SERVER ->> BCP导出数据到平面文件
--开启xp_cmdshell sp_configure ‘show advanced options’, ; GO RECONFIGURE; GO sp_configure ‘xp_cmdshell ...
- sql server 2005导出数据
*/ EXEC sp_configure 'show advanced options', 1 GO */ 配置选项 'show advanced options' 已从 0 更改为 1.请运 ...
随机推荐
- 【BFS】The Morning after Halloween
[POJ3523]The Morning after Halloween Time Limit: 8000MS Memory Limit: 65536K Total Submissions: 23 ...
- BZOJ 2157 旅游(树链剖分+线段树)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2157 [题目大意] 支持修改边,链上查询最大值最小值总和,以及链上求相反数 [题解] ...
- 【最大流】BZOJ1305-[CQOI2009]dance跳舞
[题目大意] 一次舞会有n个男孩和n个女孩.每首曲子开始时,所有男孩和女孩恰好配成n对跳交谊舞.每个男孩都不会和同一个女孩跳两首(或更多)舞曲.有一些男孩女孩相互喜欢,而其他相互不喜欢(不会“单向喜欢 ...
- 【c++随手记】编程基础之输入输出
今天试了下noi oj的1.1节,随便总结一下. [cout左对齐右对齐的方法] #include<iostream> #include<cstdio> #include< ...
- PHP 5.3.13 memcache win 64 配置和安装
--环境: windows 2008 R2 64位 wampserver2.2e-php5.3.13-httpd2.2.22-mysql5.5.24-x64 --目标: 实现 php 用memcach ...
- udev详解
转:http://www.360doc.com/content/10/0215/11/551936_15865336.shtml 如果你使用Linux比较长时间了,那你就知道,在对待设备文件这块,Li ...
- Lua学习笔记之开始
在这节课的开始,按照国际惯例,一般学习一门新的语言,都是要打印出“Hello,world”,那么我们也不例外. Lua语言的打印跟其他语言一样,只要print(“Hello,World”),然后保存为 ...
- attribute用法
attribute 用法 摘要: 在学习linux内核代码及一些开源软件的源码(如:DirectFB),经常可以看到有关__attribute__的相关使用.本文结合自己的学习经历,较为详细的介绍了_ ...
- WAF攻击与防御
背景 对于腾讯的业务来说,有两个方面决定着WAF能否发挥效果,一个是合适处理海量流量的架构,另一个关键因素则是规则系统.架构决定着WAF能否承受住海量流量的挑战,这个在之前的篇章中简单介绍过(详情见主 ...
- 跟着我从零开始入门FPGA(一周入门XXOO系列)-1、Verilog语法
(本连载共七部分,这是第一部分) 作者:McuPlayer2013 (EETOP FPGA版块版主) 原帖地址:http://bbs.eetop.cn/thread-385362-1-1.html ...