如何实现不同数据存储模式之间的数据转换

 我们许多国内用户曾经大量使用的数据库管理系统是XBASE系列(如dBASE、FoxBASE和 F

  oxPRO等)数据库管理系统。也有许多银行曾采用UNIFY数据库。随着数据库技术的发展和U N

  IX/XENIX的普及,许多用户重新采用一些先进的大型关系数据库如(ORACLE、INFORMIX和SY

  BASE)建立新的业务系统,这样就产生了一个数据移植的问题,如果重新用手工将数据录入新系统,显然太浪费人力。那么如何使用计算机自动转换数据呢?

  任何两种不同类型的数据库都可以通过一种中介文件来进行数据转换,这个中介文件就是文本文件。任何一种数据库都可以通过相应命令,将数据库中数据生成ASCII文本文件,也可以将文本文件中 数据转入数据库中。但在转换过程中必须注意一些问题。下面分别举例说明。

  一、dos操作系统中数据向unix/xenix系统中传送。

  如果要将dos系统下的Foxplus数据库中数据,转换到unix中的INFORMIX数据库中。那么首先要将Foxplus数据库中数据转换成文本文件txt,然后将形成的文本文件拷入dos盘中。再将此dos盘中文件通过unix的shell命令doscp拷入unix系统中,再用load命令将此文本文件装入INFORMIX的数据表中。在转换过程中还必须注意数据类型的问题,Foxplus数据库的日期型数据是yy/mm/dd形式(也可以设成其他形式),但拷入txt文本文件后就成了带世纪的19yy

  mmdd形式,而INFORMIX所需的形式为mmddyy式,故转换时需重新组合。

  二、汉字使用中西文两字节的数据库与使用引荐符三字节汉字的数据库之间的数据转换。

  有许多银行的应用软件原来是采用UNIFY数据库开发的,如今一些单位又基于INFORMIX ,SY

  BASE,COBOL等数据库重新开发了系统。在移植数据时出现了汉字模式不一致的问题。比如

  ,我行原来使用的储蓄系统是基于UNIFY数据库开发的,后来要将其中大量数据移入总行开发的COBOL系统中,可是UNIFY数据库中汉字使用引荐符三字节,而COBOL系统中使用的汉字是中西文两字节,所以,从UNIFY中转出的包含汉字的文本文件中的数据,必须经过汉字模式转换才能移入COBOL系统中。为此,笔者用C语言做了一个转换程序,将txt文件中的引荐符三字节汉字转换成中西文两字节的汉字。具体程序如下:

  chang3-2.c

  #include

  main()

  {

  FILE *fp1,*fp2;

  int c;

  /*three.txt为包含引荐符三字节汉字的文本文件*/

  if ((fp1=fopen("three.txt","r"))=NULL)

  {

  printf("three.txt文件打开失败!\n");

  exit(0);

  }

  /*two.txt为转换出的汉字模式为中西文两字节的文本文件*/

  fp2=fopen("two.txt","w");

  c=getc(fp1);

  while(c!=EOF)

  {

  if(c=='\') /*引荐符为"\"*/

  {

  putc(getc(fp1)|0x80,fp2); /*将高位置"1"*/

  c=getc(fp1);

  putc(c|0x80,fp2);

  }

  else

  putc(c,fp2);

  c=getc(fp1);

  }

  fclose(fp1);

  fclose(fp2);

  return;

  }

  经过以上程序转换的文本文件中的数据,就可以直接转入COBOL系统数据库或其他可使用中西文两字节汉字的数据库中了。

  总之,用计算机自动转换数据会很快捷,也有很多办法,但转换时一定要注意两种数据结构数据类型的一致,否则就会产生错误。

你可能感兴趣的:(文本文件,关系数据库)