batch 파일로 SQL 을 돌릴때 multi line query 작동하기 위해 만들었습니다.

read.txt 파일안에 다음과 같이 있습니다.
insert into SCHOOL values
(100, 'SEOUL','AAA');
insert into SCHOOL values
(200, 'BUSAN','BBB');

결과 파일은 다음과 같겠습니다.
insert into SCHOOL values (100, 'SEOUL','AAA');
insert into SCHOOL values (200, 'BUSAN','BBB');

...
read 파일은 이미 읽었다고 가정한후
...

long lSize;
char * buf;
char *p;
size_t result;

// Get total size of file
fseek (fp , 0 , SEEK_END);
lSize = ftell (fp);
rewind (fp);

buf = (char*) malloc (sizeof(char)*lSize);
result = fread (buf, sizeof(char), lSize, fp);
p = buf;

FILE *w_fp;
if ((w_fp = fopen("write.txt", "w")) == NULL)
{
printf("Could not open file.\n");
fclose(w_fp);
exit(0);
}

char value_of_char[2] = "\0";
for( int i=0 ; i<lSize ; i++)
{
strncpy(value_of_char, &buf[i], 1);

if( strncmp(value_of_char, "\n", 1) == 0 )    // 윈도우 \n 로 검색. 다른운영체제는 ("\n" 또는 "\r")
{
fwrite(" ", sizeof(char), 1, w_fp);    // 나중에 추가했습니다. 3개이상 멀티라인이 되었을 때 필요하더군요.
continue;
}

if( strncmp(value_of_char, ";", 1) == 0 )
{
fwrite(";", sizeof(char), 1, w_fp);
fwrite("\n", sizeof(char), 1, w_fp);
continue;
}
fwrite(&value_of_char, sizeof(char), 1, w_fp);
}

free(buf);
fclose(w_fp);

설명은 별거 없이 이해하기 쉽습니다.

페이스북 댓글
티스토리 댓글

+ Recent posts