Section | ||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
INSERT ON DUPLICATE KEY UPDATE
...
Code Block | ||||
---|---|---|---|---|
| ||||
create table t1 (i1 integer, i2 varchar(60), i3 varchar(5)); Created successfully. insert into t1 values (1, 'a', 'ddd' ); 1 row(s) inserted. insert into t1 values (2, 'kkkkkkkkkkkkkkkkkkkkk', 'c'); 1 row(s) inserted. insert into t1 select * from t1; 2 row(s) inserted. create table t2 (i1 integer, i2 varchar(60), i3 varchar(5)); insert into t2 (_arrival_time, i1, i2, i3) select _arrival_time, * from t1; 4 row(s) inserted. |
UPDATE
...
Ui text box | ||
---|---|---|
| ||
Info | ||
5.5 부터 제공되는 기능입니다. |
update_stmt:
update_expr_list:
...
Code Block | ||||
---|---|---|---|---|
| ||||
UPDATE TAG METADATA SET ... | ||||
Ui text box | ||||
Note |
---|
TAGDATA 테이블의 메타데이터는 INSERT ON DUPLICATE KEY UPDATE 를 통해 입력/수정할 수 없다. |
...
기본 키가 지정된 휘발성 테이블에 대해서만 수행 가능하다.
WHERE 절에는 (기본 키 컬럼) = (값) 의 조건만 허용되며, 다른 조건과 함께 작성할 수 없다.
기본 키 컬럼이 아닌 다른 컬럼을 조건에 사용할 수 없다.
delete_from_tag_where_stmt:
Code Block | ||||
---|---|---|---|---|
| ||||
delete_from_tag_where_stmt ::= 'DELETE FROM' table_name 'WHERE' tag_name '=' value ( and tag_time '<' datetime_expression )? |
Tag 테이블은 아래와 같이 2가지 방식의 삭제쿼리가, 추가적으로 지원된다.
- Tag name 기준 삭제
- Tag name과 Tag time 기준 삭제
Code Block | ||
---|---|---|
| ||
-- tag name 기준 삭제
DELETE FROM tag where tag_name = 'my_tag_2021'
-- tag name 와 tag time 기준 삭제
DELETE FROM tag where tag_name = 'my_tag_2021' and tag_time < TO_DATE('2021-07-01', 'YYYY-MM-DD'); |
- 삭제 쿼리가 실행된 후에, 삭제된 row가 저장공간에서 물리적으로 삭제되기 까지 걸리는 시간은, DBMS의 동작상황에 따라서 다를 수 있다.
LOAD DATA INFILE
...
load_data_infile_stmt:
...
CSV 포맷의 데이터 파일을 서버에서 직접 읽어서, 옵션에 따라 서버에서 직접 테이블 및 컬럼들을 생성하여 이를 입력하는 기능이다.
각 옵션에 대해서 설명하면 다음과 같다.
옵션 | 설명 |
---|---|
AUTO mode_string mode_string = (BULKLOAD | HEADUSE | HEADUSE_ESCAPE) | 해당 테이블을 생성하고 컬럼 타입(자동 생성시 varchar type) 및 컬럼명을 자동으로 생성한다. BULKLOAD: 데이터 한 개의 row를 하나의 컬럼으로 입력한다. 컬럼으로 구분할 수 없는 데이터에 대해서 사용한다. HEADUSE: 데이터 파일의 첫 번째 라인에 기술되어 있는 컬럼 명을 테이블의 컬럼명으로 사용하고, 그 라인에 기술된 수 만큼의 컬럼을 생성한다. HEADUSE_ESCAPE: HEADUSE 옵션과 유사하지만, 컬럼명이 DB의 예약어와 같을 경우 발생할 수 있는 오류를 회피하기 위해 컬럼명의 앞뒤로 '_' 문자를 덧붙이고, 컬럼명에 특수문자가 존재하면 그 문자를 '_' 문자로 변경한다. |
(FIELDS|COLUMNS) TERMINATED BY 'term_char' ESCAPED BY 'escape_char' | 데이터 라인을 파싱하기 위한 구분 문자(term_char)와 이스케이프 문자(escape_char)를 지정한다. 일반적인 CSV 파일의 경우 구분 문자는 , 이며 이스케이프 문자는 '이다. |
ENCODED BY coding_name coding_name = { UTF8(default) | MS949 | KSC5601 | EUCJP | SHIFTJIS | BIG5 | GB231280 } | 데이터 파일의 인코딩 옵션을 지정한다. 기본 값은 UTF-8이다. |
TRIM (ON | OFF) | 컬럼의 빈 공간을 제거하거나 유지한다. 기본값은 ON이다. |
IGNORE number (LINES | ROWS) | 숫자로 지정된 라인 또는 행 만큼의 데이터를 무시한다. CSV 포맷 파일의 헤더 등을 무시하거나 VCF 헤더를 무시하기 위해서 사용한다. |
MAX_LINE_LENGTH | 한 라인의 최대 길이를 지정한다. 기본값은 512K이며, 데이터가 더 큰 경우에는 더 큰 값을 지정할 수 있다. |
ON ERROR (STOP | IGNORE) | 입력 도중 에러가 발생할 경우 수행할 동작을 지정한다. STOP인 경우 입력을 중단하고 IGNORE인 경우 에러가 발생한 라인을 건너뛰고 계속 입력한다. 기본값은 IGNORE이다. |
Code Block | ||||
---|---|---|---|---|
| ||||
-- default field delimiter(,) field encloser (") 를 사용하여 데이터를 입력한다.
LOAD DATA INFILE '/tmp/aaa.csv' INTO TABLE Sample_data ;
-- 하나의 컬럼을 갖는 NEWTABLE을 생성해서 한 라인을 한 컬럼으로 입력한다.
LOAD DATA INFILE '/tmp/bbb.csv' INTO TABLE NEWTABLE AUTO BULKLOAD;
-- csv의 첫번째 라인을 컬럼 정보로 이용하여 NEWTABLE을 생성하고, 이를 그 테이블에 입력한다.
LOAD DATA INFILE '/tmp/bbb.csv' INTO TABLE NEWTABLE AUTO HEADUSE;
-- 첫번째 라인은 무시하고 필드 구분자는 ; enclosing 문자는 ' 로 지정해서 입력한다.
LOAD DATA INFILE '/tmp/ccc.csv' INTO TABLE Sample_data FIELDS TERMINATED BY ';' ENCLOSED BY '\'' IGNORE 1 LINES ON ERROR IGNORE; |
...