SQLite Command Line Tool

양현지·2023년 6월 20일
1

DB

목록 보기
15/15

1. SQLite3

RDBMS 중 하나로, 독립적으로 작동하는 디비 엔진

  • 독립성 : 클라이언트/서버 모델을 사용하지 않고 단일 프로세스 내에서 데이터베이스 직접 관리
  • 경량성 : 소규모 데이터베이스에 적합 (임베디드나 내장 시스템에 사용하기 적합)
  • 크로스 플랫폼 지원 : Window, Mac, Linux 가능
  • 트랜잭션의 ACID 보장
  • 파일로 저장되며, 애플리케이션이 SQLite3라이브러리를 사용해 데이터베이스 접근 및 조작

장점?

로컬 환경에서 간단하게 DB 구축 및 조작 가능
어플리케이션에서 SQLite3 라이브러리를 가지고 DB 파일에 접근 및 READ/WRITE
어플리케이션의 배포와 관리를 단순화하며, 서버/클라이언트 간 통신 오버헤드 제거

단점?

동시에 여러 클라이언트의 접근을 제한할 수 있음
여러 프로세스 or 스레드 간 동시성 문제를 해결해야함
> File level locking 매커니즘 사용

※ 참고 : 현지'sVelog - 병행 제어

※ DB Browser for SQLite

SQLite 데이터베이스 관리 및 탐색을 제공하는 오픈 소스 도구
시각적 인터페이스를 통해 SQLite DB파일을 열고 테이블 수정, 스키마 수정, 데이터 수정 등의 기능을 제공하여 보다 편리하게 SQLite를 관리할 수 있음

※ 서버 기반 DBMS

: 클라이언트는 서버에 쿼리를 보내고, 서버는 해당 쿼리를 처리하고 결과를 클라이언트에 반환하는 구조
-> 클라이언트와 서버간의 네트워크 통신이 필요 & 서버의 자원과 성능에 영향을 받음
e.g.) MySQL, PostgreSQL

2. SQLite3 사용법

1) Summary

Python으로 DB구축 및 테이블 생성에 대해 다루는 대신 c#을 사용하도록 한다. (실제 C++, C# 프로젝트를 진행할 때 DBManager 프로젝트를 따로 생성해 초기 구축을 수행하도록 한다.)

2) SQLite 활용 예시

① Nuget 관리자를 통해 SQLite3 라이브러리 추가

③ 활용 예시

using System.Data.SQLite;

// SQLite 클래스 생성
class SQLite
{
	string DBPath = Application.StartupPath + @"\mydatabase.sqlite"
    string dataSource = $@"Data Source = {DBPath}";
    SQLiteDataAdapter adpt;
    
    public DataSet SelectAll(string table) 
        { 
            try 
            { 
                DataSet ds = new DataSet(); 
  
                string sql = $"SELECT * FROM {table}"; 
                adpt = new SQLiteDataAdapter(sql, dataSource); 
                adpt.Fill(ds, table); 
  
                if (ds.Tables.Count > 0) return ds; 
                else return null; 
            } 
            catch (Exception e) 
            { 
                MessageBox.Show(e.ToString()); 
                throw; 
            } 
        }
        public void Insert(string table, string value) 
        { 
            try 
            { 
                using (SQLiteConnection conn = new SQLiteConnection(dataSource)) 
                { 
                    conn.Open(); 
                    string sql = $"INSERT INTO {table} VALUES ({value})"; 
                    SQLiteCommand cmd = new SQLiteCommand(sql, conn); 
                    cmd.ExecuteNonQuery(); 
                } 
            } 
            catch (Exception e) 
            { 
                MessageBox.Show(e.ToString()); 
                throw; 
            } 
        } 
}
사실 DML을 알고 있다면, query를 이해하고 전체적인 흐름을 파악하는 것을 어렵지 않다. insert/delete/update할 때 SQLite와 connection을 확인하고, DB파일을 열고 원하는 쿼리를 작성하여 Execute하는 것이 전부

※ DB Query는 필수적으로 에러 캐치 구문을 작성 할 것. (에러 메시지 포함)

2) SQLite3 command line tool

① command line tool?
대부분의 개발자라면 'command line'을 보면 cmd 혹은 terminal, powershell, (git)bash, WSL 등의 command line "인터페이스"(CLI)를 떠올릴 것이다. 그렇다면 command line tool이란 무엇인가? CLI와 상호 보완적인 요소로, CLI는 명령어 입출력 기능을 제공하고 command line tool은 실제 작업을 수행하는 데 사용된다.

※ command line
운영체제, 컴퓨터에 명령을 내리고 프로그램을 실행하도록 하는 텍스트 기만 환경. 대부분 일반 유저들에게 친화적이지 않으므로 다양한 GUI를 통해 접근하도록 함

② SQLite3 command line tool

: SQLite 관리를 위한 명령어 기반 도구
  • DB파일의 생성,수정,쿼리 실행 등의 기능 제공
  • DB Browser for SQLite 대신에 사용할 수 있음

3. SQLite3 command line tool

1) SQLite DB파일 접속

  • sqlite3 <database_fileAUD>

2) 모든 테이블 검색

  • .sqlite

3) 특정 테이블 출력

  • SELECT * FROM table_name

4) 기타

① 테이블 생성

sqlite> CREATE TABLE <table_name> (column1 datatype, column2 datatype, ...);

② 데이터 삽입

sqlite> INSERT INTO <table_name> (column1, column2, ...) VALUES (value1, value2, ...);

③ 데이터베이스 백업

sqlite> .backup <backup_file>

0개의 댓글