2020년 1월 8일 수요일

[한이터백승기][AI 엔진] SQL 저장 및 조회

[한이터백승기][AI 엔진] SQL 저장 및 조회


*주의* ) 이글은 최근에 작성된 일부입니다.
안녕하세요 오타쟁이 한이터 백승기 입니다.
이번에는 DB 테이블 에 데이터를 저장하고 불러오는 것을 테스트 하였습니다.
먼저 저장하는 쿼리와 결과입니다.
*주의* ) 여기서의 스크립트 컴파일러 언어의 저자는 백승기입니다.
개발툴은 VisualStdio 2019 Commuity를 사용하였고
본인이 저작자 임의로 스크립트 언어의 내용은 필요에따라 수정 개선됩니다.
-- 현제 명칭이나 순서 쿼리 방법이 변경되었습니다.
*주* ) 스크립트 소스
@sqla_init;
//--> 읽을 csv 파일
@txta_connect,/Hangul_data/Niadic-DIC/NOUNS/pro_nouns.csv;
//--> 저장할 DB 위치 및 파일
@sql_connect,/AI_PROJECT/AIxbsk/sqlite_db/test1.db;
//--> 테이블 명 지정
@sqla_table, proper_noun ; // 고유명사
//-> 필드명
@sqla+ p_name TEXT PRIMARY KEY,;
@sqla+ p_type TEXT NOT NULL,;
@sqla+ p_gu TEXT NOT NULL;
// 테이블 생성명령
@sqla_create;
// 스크립트 언어에서 사용할 변수명 매칭
@sqla_vars , p_name, p_type,p_gu;
// 조건 없음
@sqla_where , NOT;
// 실행
@txta_read_go; // text를 읽어 DB로
*주* ) CSV
참조: 한글형태소 사전 NIADic
*주* ) 변환실행 - 커멘드 실행환경 추가 및 기타
*주* ) 변환실행 - 결과
-- DB 테이블을 생성하고 데이터를 파일에서 가져와 DB에 저장하는 작업을
자동으로 수행합니다.
괭장히 간단한 코드로 괭장히 어려운 작업을 수행합니다.
sqlite 에 저장하기 위해서는 저장하려는 한글이 유니코드 인지 멀티바이트 인지
아니면 다른 한글 코드인지 확인해야 합니다.
그리고 원래의 한글코드가 머든 utf-8 로 변환해서 저장해야 합니다.
utf-8이 한글관련 툴에서 공통으로 사용되므로 괭장히 중요 합니다.
-- 다음글은 조회를 다룰 예정입니다.

2019년 12월 25일 수요일

[AI 엔진] db 쿼리 추가 및 테스트 [C,I,U,D]



원문: https://blog.naver.com/ihaneter/221749959682
--> 지금까지 진행된 결과는 위 사이트에 게시되어 있습니다.
--> 이 내용은 AI 구현을 위해 Script Language의 개발 과정입니다.

안녕하세요 오타쟁이 한이터 백승기 입니다.
이제 부터는 DB 엔진을 이용해서 쿼리 테스트를 수행하고자 합니다.
첫번째작업 테이블이 완료 되었습니다.
쿼리 툴은 디비버(DBeaver)를 사용합니다.
1. Create, Insert, Update, delete의 기능을 테스트합니다.
void bsk_main() {
@sqla_init;
@sql_connect,/AI_PROJECT/AIxbsk/sqlite_db/test1.db;
@sqla+CREATE TABLE contacts(;
@sqla+ id1 INTEGER PRIMARY KEY,;
@sqla+ fname TEXT NOT NULL,;
@sqla+ lname TEXT NOT NULL,;
@sqla+ email TEXT NOT NULL UNIQUE,;
@sqla+ phone TEXT NOT NULL UNIQUE);
@sqla_run; //Create 테이블
@sqla_table, contacts ; // 테이블명 지정
@sqla_vars , id1, fname,lname,email,phone ; // 테이블변수 항목
@sqla_insert , '1', 'fname1', 'ln1', '1@1.com', '111-1111' ; //Insert 1
@sqla_insert , '2', 'fname2', 'ln2', '1@2.com', '222-1111' ; //Insert 2
@sqla_insert, '3', 'fname3', 'ln3', '1@3.com', '333-1111' ; //Insert 3
@sqla_delete, id1='3' ; //Delete
@sqla_where, id1='2' and phone='222-1111'; //Where
@sqla_update, fname='fname222',lname='lname222' ; //Update
@sqla_close;
};
// 위와 같이 쿼리문을 스크립트에 기능을 추가하고 적용해 보왔습니다.
// 쓰는 형식이나 문장구조는 전부 작업상의 신속성에 목표를 두었으므로
// 기존 스타일이 무엇이든지 고려하지 않습니다.
// ==> 실행 후 생성된 결과를 이미지로 캡쳐 했습니다.
// ==> 다음과 같이 DB 필드가 추가되고 수정되고 삭제되었습니다.
// ==> 다음의 스크립트문과 데이터를 조고 받는 Interface 차례입니다.
// ==> 실행 로그 입니다.
------- comfile_list -----------
make_split_src_1 src_list count = 1
func_name[0]=void bsk_main()
[00][00] [@sqla_init]
[00][01] [@sql_connect,/AI_PROJECT/AIxbsk/sqlite_db/test1.db]
[00][02] [@sqla+CREATE TABLE contacts(]
[00][03] [@sqla+ id1 INTEGER PRIMARY KEY,]
[00][04] [@sqla+ fname TEXT NOT NULL,]
[00][05] [@sqla+ lname TEXT NOT NULL,]
[00][06] [@sqla+ email TEXT NOT NULL UNIQUE,]
[00][07] [@sqla+ phone TEXT NOT NULL UNIQUE][)]
[00][08] [@sqla_run]
[00][09] [@sqla_table, contacts]
[00][10] [@sqla_vars , id1, fname,lname,email,phone]
[00][11] [@sqla_insert , '1', 'fname1', 'ln1', '1@1.com', '111-1111']
[00][12] [@sqla_insert , '2', 'fname2', 'ln2', '1@2.com', '222-1111']
[00][13] [@sqla_insert, '3', 'fname3', 'ln3', '1@3.com', '333-1111']
[00][14] [@sqla_delete, id1='3']
[00][15] [@sqla_where, id1='2' and phone='222-1111']
[00][16] [@sqla_update, fname='fname222',lname='lname222']
[00][17] [@sqla_close]
------- comfile_var -----------
------- run bsk_main ----------
[hi][INIT][sqla] [init][hi] db open or create SUCCESS /AI_PROJECT/AIxbsk/sqlite_db/test1.db
[sqla] [CREATE TABLE contacts(][]
[sqla] [ id1 INTEGER PRIMARY KEY,][]
[sqla] [ fname TEXT NOT NULL,][]
[sqla] [ lname TEXT NOT NULL,][]
[sqla] [ email TEXT NOT NULL UNIQUE,][]
[sqla] [ phone TEXT NOT NULL UNIQUE][)]
[sqla] [run][hi][EXEC] db_tbl_exec=CREATE TABLE contacts( id1 INTEGER PRIMARY KEY, fname TEXT NOT NULL, lname TEXT NOT NULL, email TEXT NOT NULL UNIQUE, phone TEXT NOT NULL UNIQUE);
*** sql_sqla_table [ contacts][]
*** sql_sqla_vars [ id1, fname,lname,email,phone][]
*** sql_sqla_insert [INSERT INTO contacts( id1, fname,lname,email,phone) values ( '1', 'fname1', 'ln1', '1@1.com', '111-1111')]
*** sql_sqla_insert [INSERT INTO contacts( id1, fname,lname,email,phone) values ( '2', 'fname2', 'ln2', '1@2.com', '222-1111')]
*** sql_sqla_insert [INSERT INTO contacts( id1, fname,lname,email,phone) values ( '3', 'fname3', 'ln3', '1@3.com', '333-1111')]
*** sql_sqla_delete [DELETE from contacts where id1='3']
*** sql_sqla_where [ id1='2' and phone='222-1111']
*** sql_sqla_update [UPDATE contacts set fname='fname222',lname='lname222' where id1='2' and phone='222-1111']
[hi] db_close
[sqla] [close]
G:\AI_PROJECT\cvtList\cvtList\x64\Debug\BskSuperPSR.exe(828 프로세스)이(가) 0 코드로 인해 종료되었습니다.
디버깅이 중지될 때 콘솔을 자동으로 닫으려면 [도구]->[옵션]->[디버깅]->[디버깅이 중지되면 자동으로 콘솔 닫기]를 사용하도 록 설정합니다.
이 창을 닫으려면 아무 키나 누르세요.