1월 082006
 

Special Thanks to 김두현

군 복무 중 작성한 간단한 PHP 프로그램.
사단 홈페이지에 탑재하여, 사단 내 전우를 찾을 수 있도록 해주는 것.
인터페이스 및 디자인은 제로보드 4.0 의 우편번호 찾기를 가져다썼다.

육군 병 자력 시스템으로 다운로드한 사단 내 인원을
사단 웹 서버의 mysql DB에 지속적으로 업데이트 해주어야하는 번거로움이 있다.

포인트는 엑셀 파일을 sql dump 를 위한 query 로 전환해주는 C 프로그램에 있다.

사용자 삽입 이미지
1752910298.zip

엑셀 파일 sql 덤프

// sql_translator.cpp : Defines the entry point for the console application.
//

#include “stdafx.h”
#include <stdio.h>
#include <string.h>

int main()
{
    char filename[100], sql_filename[100];
    char raw_data[500];
    char temp[20][500];   
    int i, ptr, temp_ptr;
    FILE *fp_original, *fp_copied;
   
    printf(“==================================================\n”);
    printf(“ver 1.0 txt->sql 변환기 by duhyun \n”);
    printf(“==================================================\n”);
    printf(“1.현재 이 프로그램 실행파일의 위치와 동일한 곳에 txt 파일을 놓아주세요.\n”);   
    printf(“2.txt 파일명을 입력해주세요. (ex : db.txt) : “);
    scanf(“%s”,filename);
   
    printf(“파일명 %s 에 대해 sql 변환을 시작하겠습니다.\n 변환될 파일명은 %s.sql 입니다.\n 진행상황 : “, filename, filename);
   
    fp_original=fopen(filename,”r”);
   
    strcpy(sql_filename, filename);
    strcat(sql_filename, “.sql”);
   
    fp_copied=fopen(sql_filename, “w”);
       
    char temp_date[100]=”xxxx-xx-xx”;

    while(fgets(raw_data,450,fp_original)!=NULL){//파일 끝이 아닐동안 한줄 읽어오기
        printf(“.”); //진행상황 표시
        ptr=0; //raw_data 의 pointer index
       
        for(i=0;i<10;i++) {    //한줄 데이터를 각각 형식에 맞게 변환.           

            temp_ptr=0; //temp 배열의 pointer index
           
            while(raw_data[ptr]!=’\t’ && raw_data[ptr]!=’\n’){ //탭 기호나 엔터 기호 만나기 전까지 temp[i]로 복사.
                temp[i][temp_ptr]=raw_data[ptr];
                temp_ptr++;
                ptr++;
            }   
           
            temp[i][temp_ptr]=’\0′; //문자열이기 위한 조건
            ptr++;    //’\t’ 뛰어넘기

            if(i==3) { // 생년월일의 경우
                temp_date[0]=’1′;
                temp_date[1]=’9′;
                temp_date[2]=temp[i][0];
                temp_date[3]=temp[i][1];
                temp_date[5]=temp[i][2];
                temp_date[6]=temp[i][3];
                temp_date[8]=temp[i][4];
                temp_date[9]=temp[i][5];
                strcpy(temp[i], temp_date);
            }
            else if(i==8) { // 입대일의 경우
                temp[i][4]=’-‘;
                temp[i][7]=’-‘;
            }
            else if(i==9) { // 제대일의 경우
                temp[i][4]=’-‘;
                temp[i][7]=’-‘;
            }

        }       
       
        //sql 로 출력하는 부분.
        fprintf(fp_copied
            , “INSERT INTO `aka_db` (`no`, `rank`, `name`, `sn`, `birthday`, `address`, `regiment`, `ability_code`, `ability_name`, `recruitment_day`, `discharge_day`, `etc1`, `etc2`) VALUES (”, ‘%s’, ‘%s’, ‘%s’, ‘%s’, ‘%s’, ‘%s’, ‘%s’, ‘%s’, ‘%s’, ‘%s’, ”, ”);\n”
            , temp[0],temp[1],temp[2],temp[3],temp[4],temp[5],temp[6],temp[7],temp[8],temp[9]);
    }

    fclose(fp_original);
    fclose(fp_copied);

    printf(“\n변환 성공. 엔터를 누르세요.”);
    fflush(stdin);
    scanf(“%c”,raw_data);
   
    return 0;
}

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>