DB2数据库维护支持的外部文件格式

作者:zhengzhong  来源:IT165收集  发布日期:2011-09-19 11:02:01

  在DB2数据库维护中,有项工作可能经常需要处理。如在数据库投入生产使用之前,往往需要在数据库中建立大量的信息。这步工作很多都是通过数据导入来完成的,即将数据直接从某个文件中导入到数据库系统中。可见外部文件是数据库能否投入生产使用的最重要关口,所以一定要选择一款DB2数据库所支持的外部文件作为导入文件。

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

  一、定界的ASCII文件。

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

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

  1001,“office”,2323,“BeiJing”,-233

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

  二、固定记录长度的ASCII文件。

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

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

Tag标签: DB2数据库   外部文件格式  
  • 专题推荐

About IT165 - 广告服务 - 隐私声明 - 版权申明 - 免责条款 - 网站地图 - 网友投稿 - 联系方式
本站内容来自于互联网,仅供用于网络技术学习,学习中请遵循相关法律法规