常见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导入导出数据的几个工具,布布扣,bubuko.com

时间: 2024-10-25 05:02:09

常见SQL Server导入导出数据的几个工具的相关文章

SQL Server导入导出不丢主键和视图的方法

SQL Server导入导出 SQL Server 导入导出 工具/原料 使用Microsoft SQL Server Management Studio 导入导出数据. 直接使用Microsoft SQL Server Management Studio 导入导出数据会丢失主键.视图等等. 正确的保存方法如下: 一.选择本地的需要导出的数据库 右键-->任务-->生成脚本. 按向导选择需要导出的数据库下一步到“选择脚本选项” 选择需要生成的类型,注意“为服务器版本编写脚本”处选择对应的脚本.

sql server导入excel数据,字符串类型变成float

如secel中身份证字段,sql server导入后该字段变成float类型,字符串数据变成null, 解决方法:直接将excel中的这一列全部转为了文本格式. 点击excel中的转换列,菜单中点选数据-----分列-----下一步---下一步---文本---完成--保存. 再次导入即可.转为了文本格式.详情搜索  excel中某列数字转文字

SQL Server 2008 导出数据与导入数据任务介绍

引用:https://www.cnblogs.com/fuhaots2009/p/3464983.html 一. 实例数据库介绍 源数据库Test_Other_DB:存在tb_Class,tb_Student,tb_TestTable三张表. 目标数据库TestDB_Output:空库,不含任何表. 二. 实例内容介绍 实例目标: 将源数据库Test_Other_DB中的表tb_Class,tb_Student导入到目标数据库TestDB_Output中. 实现方式: >>使用"导出

Sql Server 2008 导出数据到Oracle数据库

1 2 3 4 5 选定指定表 6 点击编辑映射 编辑目标数据类型 做一些必要的调整 6.1 源类型 目标类型 sql server 2008              oracle timestamp     date varchar                           varchar2(长度尽量长) number                         number (精度要设置合理) char varchar2(长度设置合理) 还要把 可以设置为NULL都勾选上 7

SQL SERVER -&gt;&gt; BCP导出数据到平面文件

--开启xp_cmdshell sp_configure ‘show advanced options’, 1; GO RECONFIGURE; GO sp_configure ‘xp_cmdshell’, 1; --Switch on specific functionality GO RECONFIGURE; GO --Tab作为行分隔符,\n作为断行符 导出到H盘 EXECUTE master.dbo.xp_cmdshell 'bcp "SELECT TOP 20 PERCENT * FR

SQL Server 导入大数据脚本

1.先使用win+r运行cmd 2.执行osql -S DESKTOP-RGBEDS3 -U sa -P liyang -d FGCPOE_十院 -i D:\数据库\script.sql 即可!

Sql Server 导入还有一个数据库中的表数据

在涉及到SQL Server编程或是管理时一定会用到数据的导入与导出, 导入导出的方法有多种,此处以SQL Server导入表数据为例.阐述一下: 1.打开SQL Server Management Studio.在对象资源管理器中,展开"SQL Server 实例"→"数据库"→"你须要导入数据的数据库"节点.单击鼠标右键,选择"任务"→"导出数据"命令. 出现导入和导出向导的欢迎界面,单击"下

Sql Server 导入另一个数据库中的表数据

在涉及到SQL Server编程或是管理时一定会用到数据的导入与导出, 导入导出的方法有多种,此处以SQL Server导入表数据为例,阐述一下: 1.打开SQL Server Management Studio,在对象资源管理器中,展开"SQL Server 实例"→"数据库"→"你需要导入数据的数据库"节点,单击鼠标右键,选择"任务"→"导出数据"命令.出现导入和导出向导的欢迎界面,单击"下一

BCP是SQL Server中负责导入导出数据的一个命令行工具

BCP是SQL Server中负责导入导出数据的一个命令行工具,它是基于DB-Library的,并且能以并行的方式高效地导入导出大批量的数据.BCP可以将数据库的表或视图直接导出,也能通过SELECT FROM语句对表或视图进行过滤后导出.在导入导出数据时,可以使用默认值或是使用一个格式文件将文件中的数据导入到数据库或将数据库中的数据导出到文件中. 下面将详细讨论如何利用BCP导入导出数据. 1. BCP的主要参数介绍 BCP共有四个动作可以选择. (1) 导入. 这个动作使用in命令完成,后面