Special Thanks to 김두현
군 복무 중 작성한 간단한 PHP 프로그램.
사단 홈페이지에 탑재하여, 사단 내 전우를 찾을 수 있도록 해주는 것.
인터페이스 및 디자인은 제로보드 4.0 의 우편번호 찾기를 가져다썼다.
육군 병 자력 시스템으로 다운로드한 사단 내 인원을
사단 웹 서버의 mysql DB에 지속적으로 업데이트 해주어야하는 번거로움이 있다.
포인트는 엑셀 파일을 sql dump 를 위한 query 로 전환해주는 C 프로그램에 있다.
엑셀 파일 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;
}