数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

DB2数据库所支持外部文件格式


发布日期:2018年03月29日
 
DB2数据库所支持外部文件格式

在DB数据库维护中有项工作可能经常需要处理如在数据库投入生产使用之前往往需要在数据库中建立大量的信息这步工作很多都是通过数据导入来完成的即将数据直接从某个文件中导入到数据库系统中

在数据导入之前DB数据库系统往往会对外部文件的格式进行仔细的检查如果外部文件的格式不符合数据库的强制性要求数据库就会拒绝导入数据笔者这次要给大家介绍的就是DB数据库(DB数据导入的四大注意事项)支持哪些外部文件格式希望通过这个分析能够帮助数据库管理员减轻数据导入导出过程中的工作量

定界的ASCII文件

定界的ASCII文件在数据库领域内应用的是比较广泛的基本上任何一个数据库都支持这种格式的外部文件不过各个数据库对于定界ASCII文件的分隔符的要求是不同的在DB数据库中分隔符好用来标识数据元素的起始位置和结束位置一般来说DB数据库支持如下几种分隔符一是字符分隔符这个字符分隔符主要用来界定字符型数据类型的起始位置默认情况下在DB数据库(提高DB数据备份与恢复的效率)中使用双引号来作为字符分隔符这个跟其他数据库有所不同如在Oracle数据库中利用定界的ASCII文件导入数据的时候其会自动判断数据是否是字符型的数据类型即不需要使用这个字符分隔符二是列分隔符即用来界定字段的起始位置大部分情况下都采用逗号(英文状态)来作为列的分隔符不过用户可以根据自己的需要来设置不同的列分隔符如冒号或者分号等等无论是哪一种符号来做列分隔符一般情况下都需要满足一个前提条件即必须是英文输入环节下的符号如果是中文状态下的逗号或者分号则会当作普通字符来对带三是行分隔符行分隔符是一个比较特殊的分隔符因为其所采取的操作系统平台不同其采用的行分隔符是不同的如在Windows操作系统上行分隔符就是普通的换行符而在Linux等操作系统上虽然也是换行符但是两个操作系统上换行符是不同的如在Linux操作系统上打开Windows操作系统上建立的定界ASCII文件则格式会混乱如所有记录在同一行中显示好像没有分行一样为此在导入数据时如果这个定界文件是在Windwos操作系统上建立的而DB数据库则是不属在Linux操作系统上就无法正常导入导DB数据库中而需要先对格式进行转换将换行符转换为Linux操作系统所能够识别的换行符这一点数据库管理员必须要引起足够的重视

根据上面的规则如下记录就是DB数据库所能够支持的格式

officeBeiJing

注意如果在外部文件中字符串的值中包含列分隔符时(如逗号列分隔符)则这个字符串分隔符是必须的也就是说如果要导入的数据是字符型数据的话必须要使用双引号括起来如果没有列分隔符好的话则这个字符串分隔符号可有可无如BeiJing这个字符串如果不用双引号括起来的话DB数据库系统就会认为他是两个字段而不是一个字符串此时就需要使用字符分隔符将其引用起来告诉数据库系统这是一个字符串虽然这个定界的ASCII文件可以用来转换大多数的数据类型如字符型数据数字型数据日期型数据等等但是如果外部文件中包含二进制数据的话则采用这个定界的ASCII文件不是很好的选择另外就是如果文件建立的平台与DB数据库所在的平台所采用的操作系统平台不同也不建立采用这个ASCII定界文件如果遇到这种情况的话笔者建立采用PC集成交换格式的外部文件最后需要提醒的是在定界的ASCII文件中数据行的最大长度没有限制但是单独列的值的最大长度不能够超过KB则只是从ASCII文件的角度来说的在将文件导入到数据库的时候还需要注意DB数据库表中字段的大小能否容纳这个外部文件中字段的值

固定记录长度的ASCII文件

DB数据库还支持固定长度的ASCII外部文件格式有时候也将这种格式的文件叫做位置ASCII文件固定记录长度位置的ASCII文件格式使用固定的字节偏移量来替代记录分隔符以决定各个字段的界限简单的说在这种文件格式下文件中的每一个记录(记录中的每一个字段)都有固定的长度如第N条记录的起始位置就是记录的固定长度乘以N的乘积决定所计算出来的值就是从文件起点算起的字节偏移量不仅记录行的长度是固定的而且每条记录中每个列的值的起始位置和终止位置也是相同的即每个字段的长度是相同的不过字段实际内容没有达到这个固定宽度的话则往往是使用空格符来代替

不过这个文件格式比起比起上面所讲的定界的ASCII文件有很大的缺陷如制作这个文件非常的麻烦而且很容易出错多输入一个空格与少输入一个空格都会导致数据库导入错误如中文字符与英文字符所占的位置是不同的如果数据文件中同时包含中文与英文字符的话那么这个固定长度就很难控制所以说笔者跟很多数据库管理员一样并不建立采用这个固定长度的ASCII文件格式如果一定要使用的话那么也要采用专业的工具来转换这个文件如在Linux操作系统中可以利用重定向符号来制作固定宽度的ASCII文件总之如果手工建立这个文件的话则出错的可能性很大现在的DB数据库系统虽然某些导入工具还支持这种格式的外部文件但是在数据导出的时候已经放弃了这个格式可见这种格式的文件正在退出历史舞台

二进制格式的文件

以上两种文件有一个共同的特点即都不是以二进制形式存储的为此他们在应用的时候会遇到一个兼容性的文件如在Linux操作系统平台上将某张表导出为ASCII文件在Windows操作系统平台上无法将这个文件导入到DB数据库系统中主要是因为同样是ASCII文件在不同的操作系统中(如Linux操作系统或者Windows操作系统)其存储的格式是不同的为此通过ASCII文件是无法在不同的操作系统上进行数据互导的其实不光光是DB数据库遇到这种困扰在Oracle数据库也是如此

为了解决问题在DB数据库中涉及了二进制格式的外部文件这个二进制格式的数据文件主要有两种分别为PC集成交换格式和工作表单格式PC集成交换格式文件主要用于在不同的操作系统平台上如LinuxWindows操作系统平台上的DB数据库表之间进行数据传递即通过这种格式的二进制文件可以将数据从Linux操作系统上的数据库中到出来然后导入导Windows操作系统上的DB数据库中这个文件主要的特点就是其存储的不光光是记录的内容还存储了表结构的定义而且因为是二进制格式的文件所以在不同操作系统上可以容易的转移而不用担心兼容性的问题

另外一种二进制文件的格式是工作表单格式这也是DB数据库产品的一种特殊的格式文件这个工作表单格式文件的用途与PC集成交换格式的文件用途不同PC集成交换格式文件主要用来解决的是不同操作系统平台上数据迁移时的兼容性问题而这个工作表单格式的文件其主要用途则是用来解决DB不同产品之间的数据迁移如在DB数据库与Lotus产品之间的数据迁移虽然他们同样都是二进制文件但是他们用途是不同的为此数据库管理员需要根据不同用途来选择合适的文件格式

上一篇:注意:Oracle中的联合主键查询问题

下一篇:Oracle中SQL*PLUS使用的一些技巧