`
baobeituping
  • 浏览: 1039143 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

关于大容量数据导入导出的一些方法

阅读更多

1。关于大容量数据导入导出的一些方法

SQL SERVER提供多种工具用于各种数据源的数据导入导出,这些数据源包括本文文件、ODBC数据源、OLE DB数据源、ASCII文本文件和EXCEL电子表格。

 


2.常用工具

DTS:数据转换服务导入导出向导或者DTS设计器创建DTS包

使用SQL SERVER复制发布数据

BCP命令提示实用工具实现SQL SERVER实例和数据文件之间的数据导入导出

BULK INSERT实现从数据文件导入数据到SQL SERVER实例

分布式查询实现从一个数据源选择数据插入到SQL SERVER实例

SELECT INTO 语句插入数据表

 

 


3.导入导出的数据

1。导入数据的目标表必须存在。导出数据的目标文件如果存在,则将重写上面的内容。如果不存在,则BCP自动创建文件

2。数据文件中的数据必须是字符格式或是先前由bcp工具生成的格式(本机格式)

3。必须对相应的表拥有足够的权限


4。数据导入导出工具的简单用法

 

 

4.数据导入导出工具的简单用法


a.DTS

DTS是一组图形工具和可编程对象,是开发者可以将取自完全的不同源的数据析取、转换并合并成一个或者多个。

它的特点就是可以融合完全不同源的数据源 这在企业改进中应用很大 。

这里涉及到一个DTS包,它是一个有组织的链接、DTS任务、DTS转换和工作流约束的集合。

关于DTS的操作请参看相关具体文献。

 


b.BCP

它常用于将大量的数据从另外的程序转移到SQL SERVER表中。当然也可以用于将表中数据传输到数据文件中。

下面是一些BCP的简单用法(关于很多的选项使用看相关文档) 

--前序,开启xp_cmdshell

--关于xp_cmdshell的一些知识请看http://blog.csdn.net/feixianxxx/archive/2009/08/14/4445603.aspx

EXEC sp_configure 'show advanced options', 1;RECONFIGURE;

EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;

--环境

create table test

(

id int,

value varchar(100)

)

go

insert test values(1,'s1')

insert test values(2,'s2')

insert test values(3,'s3')

insert test values(4,'s4')

go

--1将表的数据导出到TEXT.txt文件中

exec master..xp_cmdshell 'bcp tempdb.dbo.test out e:\test.txt -c  -Usa -P123456'

--如果是WINDOWS身份直接xec master..xp_cmdshell 'bcp tempdb.dbo.test out e:\test.txt -T -c'


--2将TEXT.txt文件中的数据复制到test1表

select * into test1 from test where 1=2

exec master..xp_cmdshell 'bcp tempdb.dbo.test1 in e:\test.txt -c  -Usa -P123456'

select * from test1


--3将TEST表的ID字段复制到TEXT.txt中

exec master..xp_cmdshell 'bcp "SELECT id FROM tempdb.dbo.test" queryout e:\test.dat -T -c'


--4将test表中的第一行移动到text.txt中

exec master..xp_cmdshell 'bcp "SELECT top 1 * from tempdb.dbo.test "  queryout e:\test.txt -c  -Usa -P123456'


--关闭xp_cmdshell

EXEC sp_configure 'show advanced options', 1;RECONFIGURE;

EXEC sp_configure 'xp_cmdshell', 0;RECONFIGURE;

 


c.BULK INSERT

它只能用于数据导入到SQL SERVER实例中,但是我们一般会选择使用它,因为它比BCP使用工具快。

小例子:

--truncate table test

BULK INSERT tempdb..test

   FROM 'E:\test.txt'

   WITH

      (

         FIELDTERMINATOR =',',--字段分割符号

         ROWTERMINATOR ='\n'--换行符号

      )

select * from test

/*

id          value

----------- -----------

1            s1

2            asds

3            sadsa

100          2asda*/

ps:只写最简单用法,具体参数很多,参考MSDN

 


d.分布式查询

--包含访问OLE DB 数据源中的远程数据所需的全部连接信息。

--当访问链接服务器中的表时,这种方法是一种替代方法,并且是一种使用OLE DB 连接并访问远程数据的一次性的临时方法。

--对于较频繁引用OLE DB 数据源的情况,请改为使用链接服务器。


--A.将OPENROWSET 与SELECT 和SQL Server Native Client OLE DB 访问接口一起使用(MSDN)

以下示例使用 SQL Server Native Client OLE DB 访问接口访问 TEST.A 表,该表位于远程服务器 SERVER1 上的 POOFLY 数据库中.

SELECT a.*

FROM OPENROWSET('SQLNCLI', 'Server=SERVER1;Trusted_Connection=yes;',

     'SELECT GroupName, Name, DepartmentID

      FROM POOFLY.TEST.A

      ORDER BY GroupName, Name') AS a;


--B. 使用Microsoft OLE DB Provider for Jet(MSDN)

以下示例通过 Microsoft OLE DB Provider for Jet 访问 Microsoft Access Northwind 数据库中的 Customers 表。

SELECT CustomerID, CompanyName

   FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',

      'C:\Program Files\Microsoft Office\OFFICE11\SAMPLES\Northwind.mdb';

      'admin';'',Customers)

GO


--c.使用OPENROWSET 将文件数据大容量插入varchar(max) 列中

/*

为了导入大型对象数据,OPENROWSET BULK 子句支持三个选项,允许用户以单行或单列行集导入数据文件的内容。

你可以指定其中一个大型对象选项,而不是使用格式化文件。

大型对象选项包括:

SINGLE_BLOB

以单行读取data_file 的内容,以varbinary(max) 类型的单列行集返回内容。

SINGLE_CLOB

以字符读取指定数据文件的内容,以varchar(max) 类型的单行、单列行集返回内容,使用的是当前数据库的排序规则,例如文本或Microsoft Word 文档。

SINGLE_NCLOB

以Unicode 读取指定数据文件的内容,以nvarchar(max) 类型的单行、单列行集返回内容,并使用当前数据库的排序规则。

*/

以下示例创建一个用于演示的小型表,并将名为 Text1.txt 的文件中的文件数据插入 varchar(max) 列中。

CREATE TABLE my_Test(Document varchar(max))

GO

INSERT INTO  my_Test

 select * FROM OPENROWSET(BULK N'E:\test.txt', SINGLE_CLOB) AS Document

GO

select * from my_Test

/*

Document

-------------------------------------------------------  

ASDSADASDSADSADSAFKJHFAS HKLASJHASHBKDSAHKJDHSAKJDHSAKDHSAKDHSA

*/

 


e.SELECT INTO

关于这个的用法 相信大家都很清楚了 我就不说明了。

 

 

 

5。优化导入导出数据的一些方法


1。使用最小日志记录:

a.恢复模式是简单模式或者大容量日志记录模式。如果你是完整模式,可以在进行操作前改成大容量日志模式,插入后改回来

b.目的表没有触发器,没有索引,指定了TABLOCK

 


2。将数据从多个客户端并行导入到单个表:

a.如果是完整恢复模式,改成大容量日志模式

b.指定了TABLOCK

c.表上没有索引

 


3。使用批处理:通过设置BCP或者BULK INSERT的相关选项,是用于可以指定在操作过程中发给SQL的每个批处理的行数。

 


4。禁用触发器和约束:默认情况下是禁用的。如果要检查,可以在复制完成后进行一次更新操作(当然值不可以变)

 


5。对数据文件中的数据排序:通过设置ORDER提示,提高性能。默认数据文件是不排序的。

 


6。控制锁定行为:指定大容量操作过程获得一个大容量更新表级锁,这样可以减少表上锁的争夺。

 

7。回避DEFAULT:通过设置相关选项,回避在复制数据到表中时,对有DEFAULT的列插入默认值,而是改成在列中值为NULL。


本文来自CSDN博客:http://blog.csdn.net/feixianxxx/archive/2010/03/29/5427485.aspx

分享到:
评论

相关推荐

    BCP 大容量数据导入导出工具使用步骤

    主要讲四个示例的使用:导出(out),导入(in),查询导出(queryout),导出格式化(-f)文件。 示例1:导出示例数据库AdventureWorks整个表currency 或视图,使用SQL连接 代码如下:bcp AdventureWorks.sales....

    C#处理大容量数据,及多线程简单应用

    应用线程解决界面的假死状态,应用高级SQL语句执行快速导入、导出数据操作。

    38万条记录超大容量辞海词典词库access的mdb格式

    通过互联网网站导出,一共含38万多条各类词语解释、注音和例句,只可用于学习交流测试,研究数据导入导出方法,版权归原网站,用于商业用途的一切后果自负。

    Hadoop-Sqoop-Oracle:使用Sqoop在Oracle数据库和HDFS之间进行导入和导出

    支持RDBMS和HDFS之间高效大容量批量数据传输的工具 当您要将关系数据库中存储的数据导入到HDFS Hadoop引擎时使用。 可以将来自外部系统的数据导入HDFS并以Hive表和HBase表等各种Hadoop文件格式保存。 Sqoop v2仅...

    oracle在导入数据时报600错误的解决方法

    前几天导入一个大容量dmp数据文件,报一个600错误,咨询网上的解决方法,按上面的处理一圈也没有整好,最后咨询组里一个大神,出现此错误 思路是,单个数据文件大小最大为32G,分析数据库后解决如下: 错误情况: ...

    PHPMYADMIN导入数据最大为2M的解决方法

    PHPMYADMIN是经常使用的一个MySql管理工具,备份和还原是PHPMYADMIN的重要功能,在还原数据库的时候经常遇到这样的... 一、IIS部分 1)解决在 IIS 6.0 中,无法上传大容量文件的办法: 1、先在服务里关闭 iis admin se

    oracle详解

    进行数据的导入导出时,我们要注意关于字符集的问题。在EXP/IMP过程中我们需要注意四个字符集的参数:导出端的客户端字符集,导出端数据库字符集,导入端的客户端字符集,导入端数据库字符集。 我们首先需要查看这...

    Oracle数据库管理员技术指南

    3.1.7 在磁带上直接导出和导入数据 3.1.8 估计导出文件的大小 3.1.9 直接导出压缩文件 3.1.10 从压缩导出文件中直接导入 3.1.11 创建一致的导出文件 3.1.12 检查导出/导入错误 3.1.13 用导出和导入管理区 ...

    SQL SERVER 2000开发与管理应用实例

    9.4.3 在客户端实现SQL Server数据导入与导出处理的一些说明 289 9.5 在数据库中存取文件 290 9.5.1 SQL Server中的文件存取方法 290 9.5.2 程序中的文件存取处理方法 292 第 10 章 作业 295 10.1 ...

    Collector资料收集管器 V1.9

    全部文件使用系统图标,支持大容量数据库,支持拖拉操作。导入速度一流,比其它同类的软件都快很多(可以在网上找一个同类软件导入过万条记录比较)。上网浏览网页时允许通过定制IE的右键菜单来方便收集网页和图片,...

    乐游浏览器 v1.04

    一款基于IE内核,实现了IE绝大部分功能而又增强IE...支持邮件群发,方便的对邮件帐号和邮件地址管理使用微软的的数据库,ADO操作,可以更快的处理大容量的数据直接操作网络底层支持版本在线升级操作简单方便,一目了然

    内存虚拟硬盘软件

    VSuiteRamdisk是RomexSoftware开发的一款可以利用...支持导入导出虚拟硬盘设置,方便迁移。 单个内存虚拟硬盘容量最大可达2048TB。 最多支持创建128个内存虚拟硬盘。 WDM 驱动,支持即插即用特性。 多语言支持。

    虚拟内存硬盘VSuite Ramdisk v4.5 免费版

    虚拟内存硬盘VSuite Ramdisk v4.5 免费版 利用内存...支持导入导出虚拟硬盘设置,方便迁移。 单个内存虚拟硬盘容量最大可达2048TB。 最多支持创建128个内存虚拟硬盘。 WDM 驱动,支持即插即用特性。 多语言支持。

    OceanStor ISM华为存储配置工具支持java1.6-java1.7版本.zip

    2)系统配置:对配置数据导入和导出,收集信息、安全管理、事件日志查看、阵列性能监控以及其他一些高级配置 3)查看设备信息:硬盘框、控制器、接口模块类型、端口类型、硬盘容量 4)存储资源管理:RAID、LUN、...

    FastReport.Net 2018.1.2

    FastReport.Net是一款适用于...支持导入和导出RDL格式的图表 丰富的报表元素 以C#语言编写而成并只包含可托管的代码 强大的可扩展性 支持水晶报表转换 强大的可视化设计器 提供完整的源代码 合理的价格与授权规则

    校园设备维护系统的设计与实现

    利用计算机运算速度快,存储容量大,方便操作的优势,从信息与维护的管理需求出发,经过系统需求分析将系统分为:用户登录管理、设备信息管理、维修管理、用户管理、查询管理、导入导出、数据库访问七大功能模块。...

    智能调度平台系统技术要求.pdf

    5.3当数据容量过大时,提示并辅助实施相关数据的导出备份。 5.4系统采用每日增量备份,每月全量备份。 5.5系统具备异地灾备,实现系统所有数据在灾备中心的实时备 份。 5.6数据备份时,不能影响平台系统的正常运行...

Global site tag (gtag.js) - Google Analytics