오라클의 character set 변경 유틸리티 - convdat.c
그런데 clob 데이터들이 안바뀐다..흐흑..
어떻게 해야 하나..쩝..
/*****************************************************************
* *
* convdat : Data Conversion Program *
* *
* convdat : Data Conversion Program *
* *
* converts exported files in different db-charset *
* to specific db-charset files. *
* *
* compile .. : cc -o convdat convdat.c *
* .. .. : convdat dumpfile. US7ASCII[KSC5601] *
*****************************************************************/
#include<sys/types.h>
#include<sys/fcntl.h>
#include<stdio.h>
#include<string.h>
int us7_to_ksc, ksc_to_us7; /* conversion flag */
main(argc,argv)
int argc;
char *argv[];
{
us7_to_ksc = ksc_to_us7 = 0;
if(argc != 3) {
usage(argv[0]);
exit(1);
}
if(!strcmp(argv[2],"KSC5601"))
us7_to_ksc = 1;
else if(!strcmp(argv[2],"US7ASCII"))
ksc_to_us7 = 1;
else
usage(argv[0]);
data_conversion(argv[1]);
printf("conversion completed successfully !!!\n");
}
usage(prog_name)
char *prog_name;
{
printf("Usage: %s exported-file-name charset\n", prog_name);
printf(" - charset : KSC5601|US7ASCII \n");
printf(" . KSC5601 - convert us7ascii format to ksc5601 format\n");
printf(" . US7ASCII - convert ksc5601 format to us7ascii format\n");
}
data_conversion(usfile)
char *usfile;
{
int fd;
char conv_buffer[2];
if((fd = open(usfile, 2)) < 0) {
perror("open");
exit(1);
}
if(lseek(fd, 1, 0) < 0) {
perror("lseek");
exit(1);
}
if(us7_to_ksc){
conv_buffer[0] = 3;
conv_buffer[1] = 'H';
}
else if(ksc_to_us7){
conv_buffer[0] = '\0';
conv_buffer[1] = 1;
}
if(write(fd,conv_buffer,2) != 2) {
perror("write");
exit(1);
}
close(fd);
}
===========================================================================