업무 과정에서 MDB -> SQLite로 마이그레이션 작업을 해야 하는 경우가 생겼습니다.

방법을 찾아 보는 과정에서 ESF Database Migration Toolkit을 알게되었고 비교적 쉽고 간단하게

변경할 수 있어 여러분에게 소개해 드리려고 합니다.

저는 MDB를 SQLite로 변환하였기 때문에 MDB와 SQlite를 기준으로 설명드리겠습니다.

 

 

 

https://www.dbsofts.com/articles/ms_access_to_sqlite/

 

Migrating data from MS Access to SQLite | DBSofts

Migrating data from MS Access(*.mdb; *.accdb) to SQLite This article will show you how to use a simple database migration wizard to quickly migrate data from MS Access to SQLite! Help you solve complex tasks and save a lot of time! Requirements: Introducti

www.dbsofts.com

위의 사이트에서 먼저 설치를 진행합니다.

 

요구사항

Windows 7 이상

MS Access 97 이상

SQLite 2 이상

 

실행파일

본인의 운영체제 조건에 맞게 32비트 64비트를 선택하여

다운로드를 완료하면 위의 실행파일 아이콘이 생깁니다.

더블클릭하여주시고, 

 

Source에 변경 전 파일 포맷을 눌러주시고, 해당 파일의 경로를 입력하여 줍니다.

이후에 Next를 눌러주시면 됩니다.

 

 

 

 

 

Destination에 변경 후 파일 파일 포맷을 눌러주시고, 저장할 경로를 

입력해주시고 Next를 눌러주세요

 

 

변환 하고자 하는 테이블을 선택하고 Next!

 

 

마지막으로 로그를 남길 수 있는 창이 뜹니다.

저는 딱히 로그가 필요하진 않을 것 같아서 공백으로 두었습니다.

그다음 Submit을 눌러주시면 끝!

 

 

 

 

 

 

최종적으로 Viewer파일을 통하여 결과를 확인하시면 성공적인 것을 확인할 수 있습니다.

 

 

 

 

 

 

콘솔 응용 프로그램

 

위의 화면은 우리가 쉽게 볼 수있는 콘솔 응용 프로그램 화면이다.

종종 개발하는 과정에서 Visual Studio 콘솔 창을 통하여 테스트 코드 디버깅을 하게 된다. 

프로그램이 종료되기 직전에 "계속하려면 아무 키나 누르십시오..."라고 알려주던 이 까만 녀석이

오늘은 약올리듯 깜빡거리고, 꺼진다.

 

예전처럼 내가 아무 키나 누를 때까지 기다려주던 그의 모습으로 되돌리는 2가지 방법에 대해서 알아보자

 

 

1. 소스코드 끝에 System("pause") 입력하기

system 함수의 "pause" 명령어는 일시 정지를 하는 기능을 갖는다.

프로그램 중간에 넣으면 pause 실행 전 소스만 실행되고

뒤의 소스는 실행이 되지 않는다. 이러한 기능을 이용하여

소스의 끝 부분에 넣어 콘솔 창이 종료되지 않도록 하는 방법이 있다.

 

 

 

 

 

 

 

2. 프로젝트 속성 값 변경

 

프로젝트 - 속성 ( ALT + F7 )을 클릭합니다.

구성 속성 - 링커 - 시스템 - 하위 시스템의 값을

콘솔(/SUBSYSTEM:CONSOLE)으로 변경합니다. 

적용 및 확인 후 다시 콘솔 창을 띄우면 끝!

 

 

 

만약에 적용이 되었음에도 불구하고, 콘솔 창이 그대로 꺼진다면

프로젝트를 새로 만들어 다시 확인하면 정상적으로 유지되는 것을 확인할 수 있습니다.

 

 

 

 

SQLite

일반 사용자 어플리케이션 데이터베이스를 위한 사용 목적으로 개발된 오픈 RDBMS로서

별도의 서버와 프로세스 통신 없이 응용 프로그램 내에서 DB처리를 할 수 있고, 

C언어로 작성 되었으며, 일반적인 SQL(Structured Query Language)로 쿼리가 가능하다.

빠른 속도와 이식성, 안정성의 특징을 갖는다.

또한 가장 매력적인 특징 중 하나는 어디서든 실행이 가능하다는 점이고

공개된 도메인으로서 사용 목적에 관계없이 모든 사람이 자유롭게 사용 할 수 있다.

 

 

SQLite Install(설치)

2020년 4월 10일 기준 최신 버전은 3.31.1버전이며,

https://sqlite.com/index.html 에서 다운 가능하다.

 

SQLite Home Page

SQLite is a C-language library that implements a small, fast, self-contained, high-reliability, full-featured, SQL database engine. SQLite is the most used database engine in the world. SQLite is built into all mobile phones and most computers and comes bu

sqlite.com

Sqlite-amalgamtion-3310100.zip 설치하고 압축을 해제한다.

 

 

 

압축해제 후 결과물

 

 

Static Library 생성

 

나는 VIsualStudio2005 환경에서 정적라이브러리를 생성하였다.

프로젝트명을 sqlite3으로 하고, PreCompiled Header를 체크해제하고, Static Library로 프로젝트를 생성하여

디버그 모드와 릴리즈 모드로 각각 빌드를 하여 sqlite3.lib 파일을 생성하였다.

SQLite Sample Project 생성

 

TestSQlite라는 프로젝트를 생성하여 앞에서 만든 라이브러리와 헤더파일을 각각 링크해준다.

 

아래와 같이 테스트 코드를 작성하여 보고 Test.db 파일이 실제로 생성되는지 확인

// TestSQLite.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "sqlite3.h"
int _tmain(int argc, _TCHAR* argv[])
{
	sqlite3* myDB;

	if( SQLITE_OK != sqlite3_open("Test.db", &myDB) )
	{
		cout << "Not Accessed" << endl;
	}




	sqlite3_close(myDB);
	

	return 0;
}

 

생성된 테이블 확인하기

 

// TestSQLite.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "sqlite3.h"
int _tmain(int argc, _TCHAR* argv[])
{
	sqlite3* myDB = NULL;
	sqlite3_stmt *stmt = NULL;

	if( SQLITE_OK != sqlite3_open("Test.db", &myDB) )
	{
		cout << "Not Accessed" << endl;
	}

	char *sql = "CREATE TABLE SmartID(ID INTEGER, NAME TEXT);";

	if( SQLITE_OK == sqlite3_prepare_v2(myDB, sql, -1, &stmt, 0) )
	{
		sqlite3_step(stmt);
	}
	else
	{
		cout << "can not create table" << endl;

	}



	sqlite3_finalize(stmt);
	sqlite3_close(myDB);

	return 0;
}

 

다음 코드를 통하여  정수형 타입을 갖는 ID,

문자열 NAME 의 Attribute(어트리뷰트)를 갖는 SmartID 테이블을 생성한다.

 

그리고 DB Browser를 통하여 생성된 테이블을 확인해보자.

 

 

SmartID라는 테이블이 정상적으로 생성되었고, 앞으로 이 테이블을 이용하여 사용자의

ID와 Name의 데이터를 관리 할 수있게 되었다. 

 

DB Browser 설치 : https://sqlitebrowser.org/

 

DB Browser for SQLite

DB Browser for SQLite The Official home of the DB Browser for SQLite Screenshot What it is DB Browser for SQLite (DB4S) is a high quality, visual, open source tool to create, design, and edit database files compatible with SQLite. DB4S is for users and dev

sqlitebrowser.org

 

 

 

 

#include <string>
#include <iostream>
using namespace std;

bool solution(string s)
{
    bool answer = true;
    int pCnt = 0;
	int sCnt = 0;
    
    if( false == ( s.length() <= 50) ) answer = false;
    
    for(int i = 0; i < s.length(); ++i)
	{
		if( 'p' == s[i] || 'P' == s[i] ) pCnt++;
		else if( 'y' == s[i] || 'Y' == s[i]) sCnt++;
	}
    
    if( pCnt == sCnt ) answer = true;
    else answer = false;
    
    return answer;
}

 

 

 

 

1. 남이 작성한 코드를 자주 읽는 연습을 한다.

누군가가 작성한 잘 짜여진 코드는 우리에게 훌륭한 스승이 됩니다. 선배, 직장 상사, 교수님, 오픈 소스 등을 통해서

소스를 분석하고, 학습하세요 그 소스를 통해서 좋은 습관, 효율적인 알고리즘 등을 얻을 수 있습니다.

 

2. 남이 작성한 코드에 내가 원하는 기능을 추가해 본다.

누군가가 작성 해놓은 소스를 적절히 활용하여 기능을 추가하는 과정은 최초 작성자의 생각을 이해할 수 있게 됩니다.

 

3. 실 생활에서 내가 구현할 수 있다고 판단되는 것들을 개발하여 본다

프로그래밍은 꾸준히, 직접 구현 할 때 실력이 많이 향상합니다. 실 생활의 작은 부분이라도, 내가 생각한 대로 구현해 보는 습관은 프로그래밍에 재미를 느끼게 해 주고 점차 실력이 향상됨을 느끼게 해줍니다.

 

4. 글로 써보고, 그려보고 생각 해본다.

개발 전 혹은 소스 분석 과정에서 각 함수, 클래스, 상속관계 등을 글로 써보고 도식화를 통해 많은 것을 얻을 수 있습니다.

 

5. 온라인 알고리즘 사이트를 통해 최소한 하루에 한 문제씩 풀어 본다.

한 번에 많은 양을 푸는 것은 지칠 수 있으니, 쉬운 것부터 차근차근!

 

6. 자신이 맡은 혹은 개발 중인 프로그램이 작동하지 않을 때, 도움을 받으려 하지 말고 스스로 생각해보아라.

우리는 동작하지 않거나, 작동은 하되 적절하게 동작하지 않는 코드를 가지고 있을 수 있습니다. 가능한 빠르게 해결하길 원하지만 바로 도움을 요청하기보다 스스로 문제를 해결하기 위해 시간을 충분히 투자해 본다면, 큰 도움이 될 것입니다.

 

 

 

 

 

 

우리의 눈은 외부 자극이나 염증이 생기는 경우 핏줄이 서고 동시에 빨개진다.

우리는 보통 이 경우를 눈이 충혈되었다고 말한다. 스마트폰 또는 PC에 장시간 눈이 노출되거나,

비누 등 세안제에 의한 자극, 미세먼지 등의 이유로 흔하게 충혈이 되는데,

우리는 자주 겪는 상황이기 때문에 가볍게 넘기는 경우가 허다하다.

하지만 장 기간 충혈이 지속되었을 때 특정 질환으로 인하여 눈이 충혈되었다고 판단하여야 한다.
지금부터 가벼운 충혈이 아닌, 특정 질환을 원인으로 하는 충혈에 대해서 알아보자

 

 

1. 수면 부족으로 인한 충혈


우리 눈은 충분한 수면 시간을 가져야 눈물 층에 수분이 충분히 채워진다.

잠이 부족하면 눈물의 양이 부족하기 때문에 쉽게 건조해지고 충혈이 된다.

또한 잠이 부족한 경우 눈을 게슴츠레 뜨게 되는 습관이 생긴다.
이럴 땐 인공 눈물을 통하여 눈물을 보충하여 주고, 8시간의 충분한 수면을 통하여 피로를 풀어준다.

 

인공 눈물을 넣을 때 눈을 깜빡이는 경우 제대로 흡수하지 못하니,

구글 혹은 네이버에 인공 눈물 넣는 법을 통하여
인공 눈물을 제대로 넣어야 한다.

 

 

 

 

 

2. '대상포진'으로 인한 충혈

 

양쪽 눈이 아닌 한쪽 눈만 유독 충혈이 되는 경우가 발생한다면 '대상포진'의 가능성이 있다.

면역력의 저하로 체내의 신경에 잠복해 있던 수두바이러스가 신경에 염증을 일으키는 질환으로 

눈에 생긴 대상포진은 한쪽 눈에만 충혈이 생기는 특징이 있다. 이 경우에 제때 치료를 하지 않으면 

시력 저하, 각막 혼탁, 뇌졸중 발병 등의 합병증을 일으 킬 수 있기 때문에 빠른 시일 내로 병원으로 가야 한다. 

 

 

 

 

 

 

 

3. "결막염"으로 인한 충혈

 

우리의 결막은 외부로 노출되어 있어 미세먼지 등과 같은 원인으로 인하여 염증이 생기기 쉬운 구조이다.

결막염의 특징은 가렵거나 혹은 따가운 느낌을 동반하며, 눈이 시린 느낌이 들기도 한다. 

이러한 경우에도 빠른 시일 내로 병원으로 가야 한다.

 

 

 

 

 

 

4. 녹내장, 포도막염

 

까만 눈동자 주변으로 핏발이 선 상태인 섬모제 충혈이 지속된다면,
포도막염녹내장과 같은 심각한 안질환을 의심해 볼 수 있다.
급성 녹내장의 경우 안압이 급격하게 높아져 생기는 질환으로 두통과 구토가 동반될 수 있고
다른 질병에 비해 비교적 몸에 이상이 있다고 느끼기 쉽다. 제때 치료를 하지 않는 경우 영구적인 실명으로
이어질 수 있기 때문에 즉시 병원을 찾아야 한다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

저는 iPhone6(아이폰 6)를 4년째 사용하고 있었습니다.

 

 

그런데, 얼마전에 1599-0224의번호로 전화가 왔습니다.

iPhone 7(아이폰 7)을 기기변경 O, 번호이동 X, 24개월 약정으로 구매하면

현재 사용중인 요금제로 월 할부금 +4000원만 더 내시면 이용 가능하다고 하네요?

그리고 덤으로 신세계상품권에 사은품까지 준다고.....

 

흠 물론 현재 iPhone11(아이폰 11)이 나온 시기에 아이폰 7은 많이

뒤쳐져있는 상태이긴하지만, 홈 버튼도 고장 나고, 배터리도 맛이 가서 저가에 

핸드폰을 바꿀 수 있는 방법을 찾는 도중에 저는 흥미진진하게 들었습니다.

어차피 저는 고가에 핸드폰을 구매할 의사가 전혀 없고,

사은품으로 신세계 상품권 10만원, 각종 사은품까지

준다고 해버리니 저는 큰 맘먹고 구매를 해버리게 됩니다.

 

아 뭐야 지금이 어느땐데 아이폰 7을 사?라고 하실 수도 있지만 

아이폰4 5년, 아이폰6 4년을 사용했던 저에겐 저렴한 아이폰 7을 구 할 수 있어 행복했습니다.

저는 이때까지 T Direct Shop에 대하여 전혀 몰랐기에 저처럼 소소하게 행복을 느낄 수 있길 바라면서

간단하게 티 다이렉트에 대해서 설명해보겠습니다.

 

 

 

 

 

 

 

먼저 사이트 주소 입니다.

https://shop.tworld.co.kr/exhibition/view?exhibitionId=P00000087&utm_source=google&utm_medium=cpc&utm_campaign=iPhone11Pro&utm_term=%ED%8B%B0%EC%9B%94%EB%93%9C%EB%8B%A4%EC%9D%B4%EB%A0%89%ED%8A%B8%EC%83%B5&gclid=CjwKCAiAwZTuBRAYEiwAcr67OY9qcGbsoKXj4OagaLedzOXAb87AUk0h6byWts0BNNrbj8Nc-KsoLxoCNnkQAvD_BwE

 

iPhone 11 Pro 출시! | T월드 다이렉트

프로급 카메라. 프로급 디스플레이. 프로급 성능.

shop.tworld.co.kr

 

사이트를 들어가 보시면 뭐....

 

현재 계신 곳에서 바로 받아 볼 수 있는 오늘 도착 서비스

쓰던 iPhone을 반납하여 보상받을 수 있는 서비스 등도 있네요

 

특히, 오늘 도착 서비스는 현재 계신 곳으로 월,화,수,목,금,토요일에 전국 어디든 가능하다고 합니다.

계신곳으로 직접 해준다고 하네요!

 

 

자 그럼 이제 휴대폰을 구매해볼까요?

 

위와 같이 휴대폰 탭을 누르시고

요금제 및 할인 방법을 선택하여 원하시는 조건에 맞게 설정을 먼저 합니다.

그러면 스마폰이 쭈 우우우우우욱 뜨게 됩니다. 

너무 많기에 아래의 4가지 스마트폰만 이미지를 캡처했습니다.

 

 

 

이중에 저는 iPhone XR이 맘에 들어 눌러보았습니다.

 

 

가입유형, 이용방법, 약정할인 방법을 누르시면 총 할인된 금액이 표시됩니다.

사은품도 선택할 수 있고요!!

물론 휴대폰을 저렴하게 구매할 수 있는 방법은 여러 가지가 있겠지만,

T에서 서비스하는 방법을 통해서 저렴하게 구하는 방법도 있다고 알려드리고 싶었습니다.

최신 휴대폰을 비싼 돈으로 주고 사는 것도 좋지만, 절약을 위해서

T Direct Shop을 이용하여 할인을 받는 방법도 괜찮지 않을까요????

 

 

 

 

 

 

 

 

 

 

 

 

 

 

+ Recent posts