数据转换冲突及转换过程中大对象的处理

数据转换冲突及处理

数据转换冲突:

在数据转换过程中,要想实现严格的等价转换是比较困难的。必须要确定两种模型中所存在的各种语法和语义上的冲突,这些冲突可能包括:

(1)命名冲突:源数据源的标识符可能是目的数据源中的保留字。

(2)格式冲突:同一种数据类型可能有不同的表示方法和语义差异。

(3)结构冲突:如果两种DBMS之间的数据定义模型不同,如为关系模型和层次模型,则需要重新定义实体属性和联系,以防止属性或联系信息的丢失。

(4)类型冲突:不同数据库的同一种数据类型存在精度之间的差异。

(5)其他冲突:不同数据库的大对象类型存在不同的约束,而且存在一些特殊类型。如SQL SERVER中一个表中有多于一个TEXT或IMAGE的字段时,出现错误。而ORACLE也不允许一个表中的BLOB和LONG类型多于一个。

冲突处理方法:

对于以上数据转换中的冲突,可进行相应的冲突处理。

对于命名冲突,可以先检查数据源中的保留字,建立保留字集合,对于保留字中的命名冲突,根据需要重新命名。

对于格式冲突,可以根据ODBC SQL类型从数据源的驱动程序中取出相对应的数据源的数据类型后,对一些特定的类型进行特殊的处理。对于字符型数据中含有“’”字符的情况,在数据转换过程中需通过转义符作特殊处理,否则会把它误当作字符串分隔符。

对于不同数据库的同一数据类型的精度冲突,类型转换中将ODBC SQL类型和精度结合起来决定源数据类型和目标数据类型的映射关系。找出目的数据源中与源数据源类型的精度最匹配的数据类型作为缺省的映射关系。

转换过程中的数据类型匹配,日期型数据最好先转换成字符型,然后根据不同的目标数据源分别作不同的处理。如ORACLE中使用TO_DATE函数,而FOXPRO中使用CTOD函数将日期格式的字符串转换成日期。

对于SQL SERVER中的TEXT、IMAGE类型,在进行转换时需要做出选择,或者把TEXT镜像为VARchar2(4000),或者镜像为LONG 类型,但Long 类型一个表里只能有一个。对于ORACLE,TEXT类型可以映像为CLOB类型,而IMAGE可以镜像为BLOB。CLOB类型可以在一个ORACLE表里有多列。

读取数据源的元数据

数据源的元数据类型

元数据种类 元数据信息 用途

数据源连接信息 数据库名,驱动器, 用于连接源数据源和目的数据源

服务器,DSN名,

数据源描述,用户名等

表信息 表名,表属主, 用于数据转换中创建表

表模式,表类型

列信息 列名,类型,宽度, 用于数据转换中表的创建以及列映射

精度,标度,是否为空

类型信息 类型名,最大列宽度, 用于数据转换中表的创建以及类型映射

最大最小标度,

前后缀字符,

是否接受空,

关键字列表

键信息 主键名,主键列, 用于数据转换中表模式的转换

外键名,外键列,

外键关联列

其它对象信息:索引信息,存储过程信息,权限信息等 用于数据转换中数据库对象的转换。

时间: 2025-01-20 15:02:00

数据转换冲突及转换过程中大对象的处理的相关文章

数据转换冲突及转换过程中大对象的处理_MsSql

数据转换冲突及处理 数据转换冲突: 在数据转换过程中,要想实现严格的等价转换是比较困难的.必须要确定两种模型中所存在的各种语法和语义上的冲突,这些冲突可能包括: (1)命名冲突:源数据源的标识符可能是目的数据源中的保留字. (2)格式冲突:同一种数据类型可能有不同的表示方法和语义差异. (3)结构冲突:如果两种DBMS之间的数据定义模型不同,如为关系模型和层次模型,则需要重新定义实体属性和联系,以防止属性或联系信息的丢失. (4)类型冲突:不同数据库的同一种数据类型存在精度之间的差异. (5)其

SQL Server 2005数据转换服务常见设计问题

本文回答了有关 SQL Server 2005 中的数据转换服务的某些常见问题,特别回答了某些设计问题,这是关于"为什么"而不是关于"如何"的常见问题. 为什么传输几千个表的数据时向导会失败? 当前的向导体系结构会创建一个 DTS 软件包数据流以传输数据.但如果要处理几千个表,则会遇到可伸缩性限制.我们认为这是合理的,因为软件包设计人员不太可能在一个数据流中使用几千个源和几千个目标.Beta 3 中可能会针对此问题进行一些改进. 为什么我不能在导入/导出向导中复制对

PDO预处理语句PDOStatement对象使用总结_php实例

PDO对预处理语句的支持需要使用PDOStatement类对象,但该类对象并不是通过NEW关键字实例化出来的,而是通过PDO对象中的prepare()方法,在数据库服务器中准备好一个预处理的SQL语句后直接返回的.如果通过之前执行PDO对象中的query()方法返回的PDOStatement类对象,只代表的是一个结果集对象.而如果通过执行PDO对象中的prepare()方法产生的PDOStatement类对象,则为一个查询对象,能定义和执行参数化的SQL命令.PDOStatement类中的全部成

javascript中对象的定义、使用以及对象和原型链操作小结_javascript技巧

本文实例总结了javascript中对象的定义.使用以及对象和原型链操作.分享给大家供大家参考,具体如下: 1. 除了5种基本类型外,JS中剩下的就是对象 (1)对象的定义: 直接定义: var test={x:1,y:1} new方式创建: var test=new Object({x:1}) Object.create方式: var test=Object.create({x:1}) (2)对象上的赋值与取值 举例: var test={ x:1, y:2 } 方法一:可以通过test['x

IIS错误代码大汇总

iis|错误 400 无法解析此请求. 401.1 未经授权:访问由于凭据无效被拒绝. 401.2 未经授权: 访问由于服务器配置倾向使用替代身份验证方法而被拒绝. 401.3 未经授权:访问由于 ACL 对所请求资源的设置被拒绝. 401.4 未经授权:Web 服务器上安装的筛选器授权失败. 401.5 未经授权:ISAPI/CGI 应用程序授权失败. 401.7 未经授权:由于 Web 服务器上的 URL 授权策略而拒绝访问. 403 禁止访问:访问被拒绝. 403.1 禁止访问:执行访问被

学ASP动态网页必备:IIS 错误代码

iis|错误|动态|网页     400 无法解析此请求.     401.1 未经授权:访问由于凭据无效被拒绝.     401.2 未经授权: 访问由于服务器配置倾向使用替代身份验证方法而被拒绝.     401.3 未经授权:访问由于 ACL 对所请求资源的设置被拒绝.     401.4 未经授权:Web 服务器上安装的筛选器授权失败.     401.5 未经授权:ISAPI/CGI 应用程序授权失败.     401.7 未经授权:由于 Web 服务器上的 URL 授权策略而拒绝访问

JavaScript 函数

JavaScript 函数定义 JavaScript 使用关键字 function 定义函数 函数可以通过声明定义,也可以是一个表达式 函数声明 函数声明的语法 : function sum1(n1,n2){ return n1+n2; }; 函数声明后不会立即执行,会在我们需要的时候调用到 分号是用来分隔可执行JavaScript语句,由于函数声明不是一个可执行语句所以不以分号结束 函数表达式,又叫函数字面量 JavaScript 函数可以通过一个表达式定义 函数表达式可以存储在变量中: va

svn错误对照表

#, c-format msgid "Destination '%s' is not a directory" msgstr "目的 "%s" 不是目录" #, c-format msgid "Destination '%s' already exists" msgstr "目的 "%s" 已存在" #, c-format msgid "Can't read directory

使用jquery-easyui写的CRUD插件(1)

写插件先看看jqeury的插件如何写,先了解一下如何写插件的代码. jQuery插件的开发包括两种: 一种是类级别的插件开发,即给jQuery添加新的全局函数,相当于给jQuery类本身添加方法.jQuery的全局函数就是属于jQuery命名空间的函数,另一种是对象级别的插件开发,即给jQuery对象添加方法.下面就两种函数的开发做详细的说明. 1.类级别的插件开发 1.1 添加一个新的全局函数 添加一个全局函数,我们只需如下定义: jQuery.foo = function() { alert