As Writing API
CREATE TAG TABLE IF NOT EXISTS EXAMPLE (
NAME VARCHAR(20) PRIMARY KEY,
TIME DATETIME BASETIME,
VALUE DOUBLE SUMMARIZED
);
INSERT
CSV
1. TQL 파일 생성
다음 코드를 input-csv.tql
로 저장해 주십시오.
TQL 스크립트를 저장하면 편집기 우측 상단에 아이콘이 나타납니다. 클릭하면 스크립트 주소를 복사할 수 있습니다.
|
|
2. HTTP POST
```http
POST http://127.0.0.1:5654/db/tql/input-csv.tql
Content-Type: text/csv
TAG0,1628866800000000000,12
TAG0,1628953200000000000,13
```
input-csv.csv
파일을 준비해 주십시오.
TAG0,1628866800000000000,12
TAG0,1628953200000000000,13
이후 curl
로 input-csv.tql
을 호출합니다.
curl -X POST http://127.0.0.1:5654/db/tql/input-csv.tql \
-H "Content-Type: text/csv" \
--data-binary "@input-csv.csv"
3. MQTT PUBLISH
input-csv.csv
파일을 아래처럼 준비해 주십시오.
TAG1,1628866800000000000,12
TAG1,1628953200000000000,13
mosquitto_pub -h 127.0.0.1 -p 5653 \
-t db/tql/input-csv.tql \
-f input-csv.csv
APPEND
CSV
1. TQL 파일 생성
다음 코드를 append-csv.tql
로 저장해 주십시오.
|
|
2. HTTP POST
```http
POST http://127.0.0.1:5654/db/tql/append-csv.tql
Content-Type: text/csv
TAG0,1628866800000000000,12
TAG0,1628953200000000000,13
```
append-csv.csv
파일을 준비해 주십시오.
TAG2,1628866800000000000,12
TAG2,1628953200000000000,13
curl
로 append-csv.tql
을 호출합니다.
curl -X POST http://127.0.0.1:5654/db/tql/append-csv.tql \
-H "Content-Type: text/csv" \
--data-binary "@append-csv.csv"
3. MQTT PUBLISH
append-csv.csv
파일을 아래처럼 준비해 주십시오.
TAG3,1628866800000000000,12
TAG3,1628953200000000000,13
mosquitto_pub -h 127.0.0.1 -p 5653 \
-t db/tql/input-csv.tql \
-f append-csv.csv
커스텀 JSON
1. TQL 파일 생성
SCRIPT()
함수를 이용해 커스텀 JSON을 파싱합니다.
다음 코드를 input-json.tql
로 저장해 주십시오.
|
|
2. HTTP POST
```http
POST http://127.0.0.1:5654/db/tql/input-json.tql
Content-Type: application/json
{
"data": {
"columns": [ "NAME", "TIME", "VALUE" ],
"types": [ "string", "datetime", "double" ],
"rows": [
[ "TAG0", 1628866800000000000, 12 ],
[ "TAG0", 1628953200000000000, 13 ]
]
}
}
```
input-json.json
파일을 준비해 주십시오.
{
"data": {
"columns": [ "NAME", "TIME", "VALUE" ],
"types": [ "string", "datetime", "double" ],
"rows": [
[ "TAG0", 1628866800000000000, 12 ],
[ "TAG0", 1628953200000000000, 13 ]
]
}
}
다음 명령으로 업로드합니다.
curl -X POST http://127.0.0.1:5654/db/tql/input-json.tql \
-H "Content-Type: application/json" \
--data-binary "@input-json.json"
3. MQTT PUBLISH
input-json.json
파일을 아래처럼 준비해 주십시오.
{
"data": {
"columns": [ "NAME", "TIME", "VALUE" ],
"types": [ "string", "datetime", "double" ],
"rows": [
[ "TAG1", 1628866800000000000, 12 ],
[ "TAG1", 1628953200000000000, 13 ]
]
}
}
mosquitto_pub -h 127.0.0.1 -p 5653 \
-t db/tql/input-json.tql \
-f input-json.json
커스텀 텍스트
데이터를 가공한 뒤 데이터베이스에 저장해야 한다면, 적절한 tql 스크립트를 준비해 db/tql/{tql_file.tql}
토픽으로 전송해 주십시오.
1. TQL 파일 생성
다음 예시는 여러 줄의 텍스트 데이터를 가공해 테이블에 쓰는 방법을 보여 줍니다.
MAP 함수를 사용한 변환 예시입니다.
|
|
SCRIPT()
를 이용한 대안입니다.
|
|
결과 예시
text_1,2023-12-02 11:03:36.054,12
text_2,2023-12-02 11:03:36.054,23
text_3,2023-12-02 11:03:36.054,78
text_4,2023-12-02 11:03:36.054,89
text_5,2023-12-02 11:03:36.054,90
위 코드를 실행해 문제가 없다면 마지막 줄의 CSV()
를 APPEND(table('example'))
로 바꾸어 배포해 주십시오.
스크립트를 script-post-lines.tql
로 저장하고, 테스트 데이터를 db/tql/script-post-lines.tql
토픽으로 전송합니다.
lines.txt
예시
110000
221111
332222
442222
2. HTTP POST
동일한 TQL 파일은 HTTP POST 요청과 함께 사용할 수도 있습니다.
curl -H "Content-Type: text/plain" \
--data-binary @lines.txt \
http://127.0.0.1:5654/db/tql/script-post-lines.tql
3. MQTT PUBLISH
mosquitto_pub -h 127.0.0.1 -p 5653 \
-t db/tql/script-post-lines.tql \
-f lines.txt
이후 데이터가 정상적으로 변환·저장되었는지 확인합니다.
$ machbase-neo shell "select * from example where name like 'text_%'"
ROW\NUM NAME TIME(LOCAL) VALUE
────────────────────────────────────────────────────
1 text_3 2023-07-14 08:51:10.926 44.000000
2 text_0 2023-07-14 08:51:10.925 11.000000
3 text_1 2023-07-14 08:51:10.926 22.000000
4 text_2 2023-07-14 08:51:10.926 33.000000
4 rows fetched.