在SQL Server中谨慎导入导出大容量数据

在数据库初始化过程中,管理员需要面对的一个现实问题就是如何把大容量的数据导入到数据库系统 中。在SQL Server数据库中提供了一些大容量数据导入导出的工具供数据库管理员实用。如管理员可以通 过bcp实用工具,实现大容量导出数据和大容量导入数据并生成格式化文件。如可以利用bulk insert语句 将大容量数据直接从数据文件导入数据库表或者未分区的视图中去等等。

虽然在SQL Server数据库中提供了这些实用工具。不过管理员在实际工作中,仍然需要谨慎对待这项 工作。具体的来说,在大容量数据导入导出的过程中,需要注意如下几方面的内容。

一、尽量采用系统提供的工具来倒入导出大容量的数据

以上笔者提到的几款实用工具,他们有一个共同的特点,即在导入的过程中会对大容量的数据进行一 定的优化。如会规范一些数据的格式、节省导入导出的时间等等。但是利用这些工具的话,跟其他普通的 数据导入导出工具有一个差异,就是大容量导入操作不支持逗号分隔符文件中导入数据,也就是常说的文 本文件。虽然此时管理员也可以通过其他的工具来导入文件文件格式的大容量数据,但是通常情况下笔者 不建议这么做。因为其他的工具不支持导入过程中的优化功能。为此笔者建议先用其他工具,如ACCESS等 中间工具先把文本文件中的数据转化为普通的表格形式,然后再利用上面这些工具导入到系统中。这虽然 会增加一定的工作量,但是却可以保证大容量数据的质量。为此,笔者在实际工作中,如果用户遇到这种 问题笔者是强烈建议他们要采用系统提供的工具来导入导出大容量数据。

另外,利用格式化文件来提高大容量数据的规范化,也是一个不错的选择。上面提到的几款大容量导 入导出工具都支持使用专门的格式化文件来存储原始数据文件中每个字段的格式信息。格式化文件还可以 包含相应的数据库表的有关信息。格式化文件可以用于提供从数据库实例大容量导出数据和向其中大容量 导入数据时所需的所有格式信息。通俗的讲,格式化文件提供了一种解释导入期间数据文件中数据的格式 以及设置导出期间数据文件中数据格式的灵活方式。这种灵活性使得解释数据时无需编写专用代码,也无 需为满足数据库或外部应用程序的特殊需要而重新设置数据的格式。如果灵活利用格式化文件,那么用户 可以直接按需要的格式导出或者导入大容量数据,而不用事后再进行额外的格式调整。

二、选择合适的数据库日志操作模式

正如大家所知道的,用户在数据库中做的任何变化,都会记录在相关的日志中。导入导出大容量数据 也不例外。可是由于大容量数据比较大,会占用比较大的事务日志功能。为此笔者建议,在用户导入大容 量数据之前,最好选择合适的数据库日志操作模式。笔者的做法是,如果用户需要导入大容量数据,那么 最好选择大容量日志恢复模式。等到导入工作完成之后,再恢复到原先的模式。

这主要是因为在大容量日志模式下,对于大容量数据导入工作中说,支持力度相对来说比较好。与其 他日志恢复模式相比(如完全恢复模式),大容量日志恢复模式只对大容量操作进行最小记录。为此大容量 日志操作恢复模式保护大容量操作不受硬件故障的危害,提供比较好的性能并且占用日志的空间也是最小 的。所以,使用大容量日志恢复有助于防止事务日志出现空间不足的情况,因为大容量日志恢复不会插入 日志行。这个大容量日志操作模式,非常适用于使用完整恢复模式的数据库。对无索引表执行大容量操作 时,大容量日志恢复模式非常有用。

不过大容量日志操作模式也具有一定的风险。如大容量日志恢复模式会增加这些大容量复制操作丢失 数据的风险。因为大容量日志操作模式将会阻止数据库系统捕获对每个事务逐一所做的更改。如果日志备 份包含大容量日志操作,则无法还原到该日志备份中的时点,而只能还原整个日志备份。另外在大容量日 志恢复模式下,如果日志备份覆盖了任何大容量操作,则日志备份将包含由大容量操作所更改的日志记录 和数据页。这对于捕获大容量日志操作的结果至关重要。合并的数据区可使日志备份变得非常庞大。再者 ,备份日志需要访问包含大容量日志事务的数据文件。如果无法访问任何受影响的数据库文件,则事务日 志将无法备份,并且在此日志中提交的所有操作都会丢失。所以大容量日志备份模式并不是安全的日志模 式。

时间: 2024-09-29 09:52:44

在SQL Server中谨慎导入导出大容量数据的相关文章

SQL Server三种导入导出数据方式比较

当我们建立一个数据库时,并且想将分散在各处的不同类型的数据库分类汇总在这个新建的数据库中时,尤其是在进行数据检验.净化和转换时,将会面临很大的挑战.幸好SQL Server为我们提供了强大.丰富的数据导入导出功能,并且在导入导出的同时可以对数据进行灵活的处理. 在SQL Server中主要有三种方式导入导出数据:使用Transact-SQL对数据进行处理:调用命令行工具bcp处理数据:使用数据转换服务(DTS)对数据进行处理.这三种方法各有其特点,下面就它们的主要特点进行比较. 一.使用方式的比

sql server中使用T-Sql操作Xml数据

一.前言 SQLServer 2005 引入了一种称为 XML 的本机数据类型.用户可以创建这样的表,它在关系列之外还有一个或多个 XML 类型的列:此外,还允许带有变量和参数.为了更好地支持 XML 模型特征(例如文档顺序和递归结构),XML 值以内部格式存储为大型二进制对象 (BLOB). 用户将一个XML数据存入数据库的时候,可以使用这个XML的字符串,SQL Server会自动的将这个字符串转化为XML类型,并存储到数据库中. 随着SQL Server 对XML字段的支持,相应的,T-S

SQL Server 2005/2008 导入导出数据常见报错解决方法_mssql2005

数据库导入导出时总失败,错误信息如下: 正在验证 (错误) 消息 错误 0xc0202049: 数据流任务 1: 无法在只读列"ID"中插入数据. (SQL Server 导入和导出向导) 错误 0xc0202045: 数据流任务 1: 验证列元数据失败. (SQL Server 导入和导出向导) 错误 0xc004706b: 数据流任务 1: "组件"目标 - T_***"(34)"验证失败,返回的验证状态为"VS_ISBROKEN&

SQL Server 中的事务(含义,属性,管理)

含义: 事务要有非常明确的开始和结束点,SQL Server 中的每一条数据操作语句,例如SELECT.INSERT.UPDATE和DELETE都是隐式事务的一部分.即使只有一条语句,系统也会把这条语句当做一个事务,要么执行所有的语句,要么什么都不执行. 事务开始之后,事务所有的操作都会写到事务日志中,写到日志中的事务,一般有两种:一是针对数据的操作,例如插入.修改和删除,这些操作的对象是大量的数据;另一种是针对任务的操作,例如创建索引.当取消这些事务操作时,系统自动执行这些操作的反操作,保证系

SQL Server 中的事务

事务的含义: 事务要有非常明确的开始和结束点,SQL Server 中的每一条数据操作语句,例如SELECT.INSERT.UPDATE和DELETE都是隐式事务的一部分.即使只有一条语句,系统也会把这条语句当做一个事务,要么执行所有的语句,要么什么都不执行. 事务开始之后,事务所有的操作都会写到事务日志中,写到日志中的事务,一般有两种:一是针对数据的操作,例如插入.修改和删除,这些操作的对象是大量的数据;另一种是针对任务的操作,例如创建索引.当取消这些事务操作时,系统自动执行这些操作的反操作,

从SQL Server中导入/导出 Excel 的基本方法

excel|server 从SQL Server中导入/导出 Excel 的基本方法 /*===================  导入/导出 Excel 的基本方法 ===================*/ 从Excel文件中,导入数据到SQL数据库中,很简单,直接用下面的语句: /*===================================================================*/--如果接受数据导入的表已经存在insert into 表 select

精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换_MsSql

* 说明:复制表(只复制结构,源表名:a 新表名:b)       select * into b from a where 1<>1     * 说明:拷贝表(拷贝数据,源表名:a 目标表名:b)       insert into b(a, b, c) select d,e,f from b;     * 说明:显示文章.提交人和最后回复时间       select a.title,a.username,b.adddate from table a,(select max(adddate

如何将MS SQL server中的数据导入到Mysql中

问题描述 在Mysql中已经有了表结构. 解决方案 我用navicat客户端,直接搞定.解决方案二:从sqlserver从导出数据到sql文件,去除[]括号和GO,直接到mysql运行sql文件即可.解决方案三:要将sql server数据库中的数据全部导入到mysql数据库中,其方法有多种,利用mysql ODBC把SQL Server中数据库中的数据导入到MySQL中第一步:安装mysql ODBC: 去相关的网站下载mysql ODBC进行安装. 第二步:建立MySQL的DSN: 在控制面

使用DTS导入多个文件数据到SQL Server中

server|数据 使用DTS导入多个文件数据到SQL Server中     在我们工作中,经常需要将保存在文件中的数据导入到SQL Serve的表中.有时可能需要同时从相同或不相同的文件目录中导入多个文件的数据到SQL Server中.这里我们将讨论如何使用批处理文件和DTS从一个特定的文件目录中,导入多个文件的数据到SQLServer中.     试验环境 我们先创建整个试验的环境.创建文件目录"C:\MyImport",和三个文件a.csv.b.csv和c.csv,文件内容如下