StoryCode

'Database 관리/Maria DB'에 해당되는 글 12건

  1. JSON 처리
  2. 설치 및 설정

JSON 처리

Database 관리/Maria DB
반응형

참조 1 ) https://mariadb.com/kb/en/library/json-functions/

참조 2 ) https://mariadb.com/kb/en/library/json_object/

SELECT * FROM TEMP_TBL;
+------------------------------------------------------------------------------------------------------------------------------------------------------+
| V                                                                                                                                                    |
+------------------------------------------------------------------------------------------------------------------------------------------------------+
| [{"TYPE":"HP", "NO":"01012345678", "RETRY":"3"}, {"TYPE":"TELEGRAM", "NO":"42543524", "RETRY":"3"},{"TYPE":"KAKAO", "NO":"01012345678","RETRY":"3"}] |
+------------------------------------------------------------------------------------------------------------------------------------------------------+


SELECT JSON_EXTRACT(V, '$[0].NO'),
       JSON_UNQUOTE(JSON_EXTRACT(V, '$[0].NO')),
       JSON_VALUE  (V, '$[0].NO')
FROM   TEMP_TBL  A;
+----------------------------+------------------------------------------+----------------------------+
| JSON_EXTRACT(V, '$[0].NO') | JSON_UNQUOTE(JSON_EXTRACT(V, '$[0].NO')) | JSON_VALUE  (V, '$[0].NO') |
+----------------------------+------------------------------------------+----------------------------+
| "01012345678"              | 01012345678                              | 01012345678                |
+----------------------------+------------------------------------------+----------------------------+

SELECT JSON_EXTRACT(V, CONCAT('$[', B.NOUID - 1, '].NO'))
FROM   TEMP_TBL  A STRAIGHT_JOIN
       CLONE_TBL B
WHERE  B.NOUID BETWEEN 1 AND JSON_LENGTH(A.V)

+----------------------------------------------------+
| JSON_EXTRACT(V, CONCAT('$[', B.NOUID - 1, '].NO')) |
+----------------------------------------------------+
| "01012345678"                                      |
| "42543524"                                         |
| "01012345678"                                      |
+----------------------------------------------------+

 

 

명령설명)

 JSON_QUERY와 JSON_VALUE의 차이점
        JSON_QUERY와 JSON_VALUE의 예제와 비교합니다.
    JSON_ARRAY
        나열된 값이 포함 된 JSON 배열을 반환합니다.
    JSON_ARRAY_APPEND
        JSON 문서 내에서 주어진 배열의 끝에 값을 추가합니다.
    JSON_ARRAY_INSERT
        JSON 문서에 값을 삽입합니다.
    JSON_COMPACT
        불필요한 모든 공간을 제거하여 json 문서가 가능한 한 짧습니다.
    JSON_CONTAINS
        지정된 JSON 문서 또는 문서 내의 지정된 경로에서 값을 찾을 수 있는지 여부
    JSON_CONTAINS_PATH
        지정된 JSON 문서에 지정된 경로의 데이터가 있는지 여부를 나타냅니다.
    JSON_DEPTH
        JSON 문서의 최대 깊이.
    JSON_DETAILED
        중첩 구조를 강조하는 가장 이해하기 쉬운 방식으로 JSON을 나타냅니다.
    JSON_EXISTS
        지정된 데이터에 지정된 JSON 값이 있는지 확인합니다. 
    JSON_EXTRACT
        JSON 문서에서 데이터를 추출합니다.
    JSON_INSERT
        JSON 문서에 데이터를 삽입합니다.
    JSON_KEYS
        JSON 객체의 최상위 값에서 키를 반환하거나 경로에서 최상위 키를 반환합니다.
        MariaDB [test]> select id, json_keys(data) from json_test;
        +------+-----------------------------------+
        | id   | json_keys(data)                   |
        +------+-----------------------------------+
        |    1 | ["Name", "Sex", "Phone"]          |
        |    2 | ["Name", "Sex", "Phone", "Birth"] |
        |    3 | ["Name", "Sex", "Phone", "Birth"] |
        |    4 | NULL                              |
        |    5 | NULL                              |
        +------+-----------------------------------+
        5 rows in set (0.000 sec)

    JSON_LENGTH
        JSON 문서의 길이 또는 문서 내 값의 길이를 반환합니다.
    JSON_LOOSE
        더 읽기 쉽게 보이도록 JSON 문서에 공백을 추가합니다.
    JSON_MERGE
        주어진 JSON 문서를 병합합니다.
    JSON_MERGE_PATCH
        주어진 JSON 문서의 RFC 7396 호환 병합
    JSON_MERGE_PRESERVE
        JSON_MERGE의 동의어
    JSON_OBJECT
        주어진 키 / 값 쌍을 포함하는 JSON 객체를 반환합니다. 
    JSON_QUERY
        JSON 문서가 주어지면 경로로 지정된 객체 또는 배열을 반환합니다.
    JSON_QUOTE
        문자열을 JSON 값으로 인용합니다.
    JSON_REMOVE
        JSON 문서에서 데이터를 제거합니다.
    JSON_REPLACE
        JSON 문서에서 기존 값을 바꿉니다.
    JSON_SEARCH
        JSON 문서 내에서 지정된 문자열의 경로를 반환합니다.
    JSON_SET
        JSON 문서에 데이터를 업데이트하거나 삽입합니다.
    JSON_TYPE
        JSON 값의 유형을 반환합니다.
    JSON_UNQUOTE
        JSON 값을 인용 해제하여 문자열을 반환합니다. 
    JSON_VALID
        값이 유효한 JSON 문서인지 여부 
    JSON_VALUE
        JSON 문서가 주어지면 지정된 스칼라를 반환합니다.

반응형

'Database 관리 > Maria DB' 카테고리의 다른 글

UDF 만들기  (0) 2021.05.06
Ubuntu 20.04.02, MariaDB 10.5 설치, UDF 설치, System Call Udf  (0) 2021.02.16
maria10.zip.windows10 64bit.설치  (0) 2020.04.23
MySQL.무인스톨설치  (0) 2020.04.23
설치 및 설정  (0) 2018.10.31

설치 및 설정

Database 관리/Maria DB
반응형

1) MariaDB 10 설치.

MariaDB 공식 홈페이지에서 리포지토리 정보 취득


URL: https://downloads.mariadb.org/mariadb/repositories/ => 시키는 대로 설치

    1. Choose a Distro -> CentOS

    2. Choose a Release -> CentOS 7 (64-bit)

    3. Choose a Version -> 10.3 [Stable]


rpm -qa Maria*

    MariaDB-compat-10.3.10-1.el7.centos.x86_64

    MariaDB-common-10.3.10-1.el7.centos.x86_64

    MariaDB-client-10.3.10-1.el7.centos.x86_64

    MariaDB-server-10.3.10-1.el7.centos.x86_64



2) MariaDB 설정

# vi /etc/my.cnf.d/server.cnf

[mysqld]

character-set-server = utf8


# systemctl start mariadb

# systemctl enable mariadb

# mysql_secure_installation => root 암호설정 됨.

# systemctl status mariadb



3) 유저 생성 및 IP 허용

https://dev.mysql.com/doc/refman/5.7/en/adding-users.html


create user 'service'@'%' identified by "password";


GRANT ALL PRIVILEGES ON *.* TO 'service'@'%';

GRANT ALL PRIVILEGES ON *.* TO 'service'@'localhost'  identified by "암호";



모든 IP 허용

INSERT INTO mysql.user (host,user,password) VALUES ('%','root',password('패스워드'));

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';


FLUSH PRIVILEGES;




IP 대역 허용 ( 예: 111.222.xxx.xxx )

다음과 같이 설정하면 111.222로 시작하는 모든 IP가 허용된다.


# INSERT INTO mysql.user (host,user,password) VALUES ('111.222.%','root',password('패스워드'));

# GRANT ALL PRIVILEGES ON *.* TO 'root'@'111.222.%';

# FLUSH PRIVILEGES;


 


# 특정 IP 1개 허용 ( 예: 111.222.33.44 )

# INSERT INTO mysql.user (host,user,password) VALUES ('111.222.33.44','root',password('패스워드'));

# GRANT ALL PRIVILEGES ON *.* TO 'root'@'111.222.33.44';

# FLUSH PRIVILEGES;




# 모든 IP를 허용한 경우 다음과 같이 원래 상태로 복구할 수 있다.

# DELETE FROM mysql.user WHERE Host='%' AND User='root';

# FLUSH PRIVILEGES;



CREATE USER 'root'@'192.168.11.%' IDENTIFIED BY "password";

GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.11.%' WITH GRANT OPTION;

FLUSH PRIVILEGES;


4) 방화벽 풀기

firewall-cmd --permanent --zone=trusted --add-source=192.168.11.1/24

firewall-cmd --permanent --zone=trusted --add-port=3306/tcp

firewall-cmd  --reload

반응형

'Database 관리 > Maria DB' 카테고리의 다른 글

UDF 만들기  (0) 2021.05.06
Ubuntu 20.04.02, MariaDB 10.5 설치, UDF 설치, System Call Udf  (0) 2021.02.16
maria10.zip.windows10 64bit.설치  (0) 2020.04.23
MySQL.무인스톨설치  (0) 2020.04.23
JSON 처리  (0) 2019.12.03