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 코드로 인해 종료되었습니다.
디버깅이 중지될 때 콘솔을 자동으로 닫으려면 [도구]->[옵션]->[디버깅]->[디버깅이 중지되면 자동으로 콘솔 닫기]를 사용하도 록 설정합니다.
이 창을 닫으려면 아무 키나 누르세요.
​