StoryCode

[편법] CVS Parsing, 파싱

Database 관리/Maria DB
반응형

- mysql 혹은 mariadb 에는 csv 를 파싱하는 함수가 없음.

- user function 을 짤수는 있음.

- 편법으로는 아래처럼 json_value 혹은 json_parse 으로 추출하는 것이 가능함.

 

column1 = "1","2",3

column1 이라는 컬럼에 위와 같은 csv 포맷 데이타가 있다고 가정하면,

select json_value(concat('{"data": [', column1, ']}'), '$.data[0]') c1;
c1 = 1

select json_value(concat('{"data": [', column1, ']}'), '$.data[1]') c2;
c2 = 2

select json_value(concat('{"data": [', column1, ']}'), '$.data[2]') c3;
c3= 3

 

 

반응형

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

Lock, 락, 해결  (0) 2021.10.29
RDS, export, mysqldump/ import  (0) 2021.10.14
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

UDF 만들기

Database 관리/Maria DB
반응형

 

 

 

참고) DROP FUNCTION 을 여러번 명령날려야 하는 듯 하다. 여러 번 DROP FUNCTION 을 하다보면 데이타베이스가 내려갔다가 다시 올라온다. 작업시 매우 주의할 것.

 

반응형

Ubuntu 20.04.02, MariaDB 10.5 설치, UDF 설치, System Call Udf

Database 관리/Maria DB
반응형
mysql -u root -p

* 참조 : computingforgeeks.com/how-to-install-mariadb-on-ubuntu-focal-fossa/

sudo apt update && sudo apt upgrade
sudo apt -y install software-properties-common
sudo apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc'
sudo add-apt-repository 'deb [arch=amd64] http://mariadb.mirror.globo.tech/repo/10.5/ubuntu focal main'
sudo apt update
sudo apt install mariadb-server mariadb-client
sudo mysql_secure_installation
# 대답은 전부 Y 로 함.
systemctl status mysql
# mysql5.7 / mariadb10.1 이상의 root 계정은 터미널에서만 사용만 가능.

CREATE USER '아이디'@'%' IDENTIFIED BY '비밀번호';
GRANT ALL PRIVILEGES ON *.* TO '아이디'@'%';

# root 권한 부여
UPDATE mysql.user SET GRANT_PRIV = 'Y', SUPER_PRIV = 'Y' WHERE USER = '아이디';
FLUSH PRIVILEGES;

 

 

 

 

* UDF.system call

sudo apt-get install make gcc
sudo apt-get install libmysqlclient-dev 
sudo apt install libmariadb-dev
sudo apt install default-libmysqlclient-dev
# libmysqlclient15-dev 는 안됨.



mysql_config --include
>> -I/usr/include/mariadb -I/usr/include/mariadb/mysql : 여기에 my_global.h, m_ctype.h 등이 있어야 함.

# "lib_mysqludf_sys.c" 에서, 

아래 삭제후 저장
    #include <my_global.h>
    #include <my_sys.h>
    #include <m_ctype.h>
    #include <m_string.h>

#include <mysql.h> 가 include 되는 게 중요.

sudo ./install.sh # so 생성을 위해서



mysql> SHOW VARIABLES LIKE 'plugin_dir';
+---------------+------------------------+
| Variable_name | Value                  |
+---------------+------------------------+
| plugin_dir    | /usr/lib/mysql/plugin/ |
+---------------+------------------------+
1 row in set (0.001 sec)

# /usr/lib/mysql/plugin/ 에 so 가 있어야 함.
sudo cp /usr/lib/lib_mysqludf_sys.so /usr/lib/mysql/plugin/

sudo ./install.sh # so 를 function 에 등록을 위해서

 

반응형

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

[편법] CVS Parsing, 파싱  (0) 2021.09.23
UDF 만들기  (0) 2021.05.06
maria10.zip.windows10 64bit.설치  (0) 2020.04.23
MySQL.무인스톨설치  (0) 2020.04.23
JSON 처리  (0) 2019.12.03

maria10.zip.windows10 64bit.설치

Database 관리/Maria DB
반응형

참조 ) https://jbongsu.blogspot.com/2018/07/mysqlmariadbsql-mariadb-10216-zip.html

참조 ) 

 

 

1) zip 을 다운로드하여 특정 디렉토리에 푼후, PATH 에 bin 추가

Ex> e:\DATABASE\mariadb-10.4.12-winx64

 

 

2) 관리자모드.DOS 창을 오픈

bin\mysql_install_db --datadir=e:\DATABASE\mariadb-10.4.12-winx64\data --service="MariaDB" --port=3306 --password=비번

 

3) service 에서 start 시키기

 

4) 이미 2) 에서 비번은 설정했으나, 변경시 아래 실행

mysql -u root -p

use mysql;

select user, host from mysql.user;
alter user 'root'@'localhost' identified by '비번';
flush privileges;

 

5) 

 

반응형

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

UDF 만들기  (0) 2021.05.06
Ubuntu 20.04.02, MariaDB 10.5 설치, UDF 설치, System Call Udf  (0) 2021.02.16
MySQL.무인스톨설치  (0) 2020.04.23
JSON 처리  (0) 2019.12.03
설치 및 설정  (0) 2018.10.31

MySQL.무인스톨설치

Database 관리/Maria DB
반응형

참조)

https://m.blog.naver.com/PostView.nhn?blogId=tweakerz&logNo=220947651834&proxyReferer=https:%2F%2Fwww.google.com%2F

 

1) c:\mysql 폴더에 zip 파일 풀기

 

2) path 에 c:\mysql\bin 추가하기

 

3) my-default.ini 를 my.ini 로 복사

 

4) my.ini

[mysqldump]
default-character-set = utf8

[client]
default-character-set = utf8

 

[mysql]
default-character-set = utf8

[mysqld]
character-set-server = utf8
collation-server = utf8_general_ci
init_connect = set collation_connection = utf8_general_ci
init_connect = set names utf8
character-set-client-handshake = FALSE
skip-character-set-client-handshake

 

basedir = C:/mysql 와 같이 mysql 설치경로를 입력
datadir = C:/mysql/data 와 mysql 설치경로 하위의 DB폴더명
port = 3306 와 같이 기본3306포트를 지정합니다.

 

5) 설치 초기화

mysqld --install

mysqld --initialize

 

6) 서비스 시작

net start mysql

 

7) root 암호

data/*.err 파일안에서 password 로 검색해보면 임의 암호가 보임.

 

8) 접속 후 비밀번호 변경

mysql -uroot -p

show databasesalter user `root`@`localhost` identified by 'abc123'

 

9) 

 

 

 

 

반응형

'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
JSON 처리  (0) 2019.12.03
설치 및 설정  (0) 2018.10.31

sql to csv

Database 관리/Oracle
반응형

참조 : https://stackoverflow.com/questions/30357272/export-from-oracle-sql-to-csv-from-command

참조 : https://community.oracle.com/thread/2357292

 

file.sql:

spool "/home/username/file.csv";
SELECT /*csv*/ '"'||COLUMN_1||'"',
'"'||COLUMN_2||'"',
'"'||DBMS_LOB.substr(COLUMN_3,3000)||'"',
        ...
'"'||COLUMN_N||'"'
FROM TABLE; 
spool off; 

 

file.sh:

export ORACLE_SID=MYSID
sqlplus / as sysdba <conn myUser/myPass 
set heading off
set termout off 
set trimout off
set newpage none
set pages 0
set feedback off
set echo off
set verify off
set trimspool on
set sqlprompt "" 
set colsep ","
set linesize 32767      
@/home/username/file.sql
exit
EOF

 

 

 

반응형

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

SQL Developer 설치  (0) 2020.02.27
IOT (Indexed Organized Table)  (0) 2020.02.11
NESTED TABLE Column  (0) 2020.02.11
Oracle.Client.SQLPlus.1x.Ubuntu21 설치 ( window, linux 방식 동일 )  (0) 2020.01.17

SQL Developer 설치

Database 관리/Oracle
반응형

1) https://www.oracle.com/tools/downloads/sqldev-v192-downloads.html

 

 

반응형

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

sql to csv  (0) 2020.04.07
IOT (Indexed Organized Table)  (0) 2020.02.11
NESTED TABLE Column  (0) 2020.02.11
Oracle.Client.SQLPlus.1x.Ubuntu21 설치 ( window, linux 방식 동일 )  (0) 2020.01.17

IOT (Indexed Organized Table)

Database 관리/Oracle
반응형
  IOT Table
행구분 PK. ROWID 가 없다. ROWID
FULL SCAN 시 리턴 순서 PK 순에 따라 출력 없다.
Unique Constraint 불가  
Cluster 불가  
저장공간 Table 보다 감소  
Primary Key 필수  
Secondary Index PK + UROWID ( Universal Rowid based pk )  
장점 Auto Ordering  
반응형

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

sql to csv  (0) 2020.04.07
SQL Developer 설치  (0) 2020.02.27
NESTED TABLE Column  (0) 2020.02.11
Oracle.Client.SQLPlus.1x.Ubuntu21 설치 ( window, linux 방식 동일 )  (0) 2020.01.17

NESTED TABLE Column

Database 관리/Oracle
반응형

참조) https://m.blog.naver.com/geartec82/220954927715

 

테이블 안에 특정 컬럼 값이 테이블 구조처럼 관리하고 사용되어 지는 방식을 말한다.
자동적으로 group by 형태로 저장하는 방식중에 하나이다.
 

 CREATE OR REPLACE TYPE my_tab_t AS TABLE OF VARCHAR2(30);
/
CREATE TABLE nested_table (id NUMBER, col1 my_tab_t)
       NESTED TABLE col1 STORE AS col1_tab;
      
SQL> desc nested_table
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 ID                                                 NUMBER
 COL1                                               MY_TAB_T

Insert data into table:

INSERT INTO nested_table VALUES (1, my_tab_t('A'));
INSERT INTO nested_table VALUES (2, my_tab_t('B', 'C'));
INSERT INTO nested_table VALUES (3, my_tab_t('D', 'E', 'F'));
COMMIT;

 



Select from nested table:
 

 SQL> SELECT * FROM nested_table;
        ID COL1
---------- ------------------------
         1 MY_TAB_T('A')
         2 MY_TAB_T('B', 'C')
         3 MY_TAB_T('D', 'E', 'F')

 



Unnesting the subtable:
 

 SQL> SELECT id, COLUMN_VALUE FROM nested_table t1, TABLE(t1.col1) t2;
        ID COLUMN_VALUE
---------- ------------------------
         1 A
         2 B
         2 C
         3 D
         3 E
         3 F
6 rows selected.

 



실예제>

nested table column을 통하여 한명의 고객이 주소값으로 여러개의 컬럼 값을 가질수 있게 관리합니다.
 

 CREATE TYPE address_t AS OBJECT (
   street  VARCHAR2(30),
   city    VARCHAR2(20),
   state   CHAR(2),
   zip     CHAR(5) );
/

CREATE TYPE address_tab IS TABLE OF address_t;
/

CREATE TABLE customers (
   custid  NUMBER,
   address address_tab )
NESTED TABLE address STORE AS customer_addresses;


INSERT INTO customers VALUES (1,
            address_tab(
              address_t('101 First', 'Redwood Shores', 'CA', '94065'),
              address_t('123 Maple', 'Mill Valley',    'CA', '90952')
            )                );

 



데이터 확인
 

 SQL> select c.custid, u.*
  2  from customers c, table (c.address) u
  3  ;

    CUSTID STREET                         CITY                 ST ZIP
---------- ------------------------------ -------------------- -- -----
         1 101 First                      Redwood Shores       CA 94065
         1 123 Maple                      Mill Valley          CA 90952

 


뷰에서 확인하는 방법

NESTED TABLE column 을 생성하면 USER_NESTED_TABLES and USER_NESTED_TABLE_COLS 두개의 뷰에서 확인할 수 있습니다.

뷰에서 NESTED TABLE,NESTED TABLE column 확인하는 방법
 

 SQL> select TABLE_NAME from USER_NESTED_TABLES;

TABLE_NAME
------------------------------
COL1_TAB

SQL> select TABLE_NAME,COLUMN_NAME from USER_NESTED_TABLE_COLS;

TABLE_NAME                     COLUMN_NAME
------------------------------ ------------------------------
COL1_TAB                       NESTED_TABLE_ID
COL1_TAB                       COLUMN_VALUE

반응형

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

sql to csv  (0) 2020.04.07
SQL Developer 설치  (0) 2020.02.27
IOT (Indexed Organized Table)  (0) 2020.02.11
Oracle.Client.SQLPlus.1x.Ubuntu21 설치 ( window, linux 방식 동일 )  (0) 2020.01.17

Oracle.Client.SQLPlus.1x.Ubuntu21 설치 ( window, linux 방식 동일 )

Database 관리/Oracle
반응형

[ ZIP 방식 ]

1. https://www.oracle.com/database/technologies/instant-client/winx64-64-downloads.html

 

 

2. 먼저 Instant Client Package - Basic 

 

3. Instanct Client Package - SQL*Plus (Instant Client Package - Basic 와 같은 버전) 를 다운로드한다.

 

4. 다운로드한 2개의 zip 파일을 동일한 디렉토리에서 unzip 하면 동일한 디렉토리에 압축이 풀린다. D:\oracle_instantclient_11_2에 압축해제 한다.

5. 몇가지 환경변수를 추가한다.
ORACLE_HOME=d:\oracle_instantclient_11_2
TNS_ADMIN=d:\oracle_instantclient_11_2\network\admin --> tnsnames.ora 파일이 위치할 디렉토리
PATH=d:\oracle_instantclient_11_2
NLS_LANG=AMERICAN_AMERICA.KO16KSC5601

LD_LIBRARY_PATH=d:\oracle_instantclient_11_2

 

export ORACLE_HOME TNS_ADMIN NLS_LANG LD_LIBRARY_PATH

 

* 리눅스의 경우 /etc/profile 에 추가후 재 접속



6. d:\oracle_instantclient_11_2\network\admin 디렉토리를 생성한다. tnsnames.ora는 ORACLE_HOME에 두어도 상관없지만 통상 oracle 설치될 때 ORACLE_HOME\network\admin에 존재하므로 비슷하게 만들었다.

7. TNS_ADMIN 디렉토리에 tnsnames.ora 파일을 생성하고 아래와 같은 형식으로 입력한다.
ORCL =
    (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP) (HOST = xxx.xxx.xxx.xxx) (PORT = 1521))
        (CONNECT_DATA = (SID = ORCL))
    )

 

혹은

ORCL = 

    (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP) (HOST = xxx.xxx.xxx.xxx) (PORT = 1521))
        (CONNECT_DATA =

            (SERVER = DEDICATED)

            (SERVICE_NAME = ORCL.domain.com) # RAC 인 경우에는 SID 대신 SERVICE_NAME 을 쓰자.

        )
    )

 

8.tnsping 이 있으면 접속 테스트 해볼 수 있다. 근데 tnsping 설치는 Oracle Universal 이 있어야 가능한듯하다. 직접설치하는 방법은 못 찾았다.


9. sqlplus 접속방법

방법 1) 접속 테스트를 위해 명령 프롬프트를 실행한 후, sqlplus id/pwd@tnsnames.ora의 서버_이름

방법 2) ./sqlplus id/pwd@211.123.234.456:1521/SID

방법 3) ./sqlplus id/pwd@(DESCRIPTION=(ADDRESS=(PROTOCOL....# tnsname.ora 내용을 직접 입력

 

[ rpm 방식 ]

1) sudo apt-get update

2) sudo apt-get install alien

3) sudo apt search libaio1

4) rpm 3종 instantclient-basic, instantclient-devel, instantclient-sqlplus download

5.Sample) sudo alien -i 로 설치

sudo alien -i oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm

sudo alien -i oracle-instantclient12.1-devel-12.1.0.2.0-1.x86_64.rpm

sudo alien -i oracle-instantclient12.1-sqlplus-12.1.0.2.0-1.x86_64.rpm

6) /etc/profile에 환경변수 설정은 할 것

ORACLE_HOME=d:\oracle_instantclient_11_2
TNS_ADMIN=d:\oracle_instantclient_11_2\network\admin --> tnsnames.ora 파일이 위치할 디렉토리
PATH=d:\oracle_instantclient_11_2
NLS_LANG=AMERICAN_AMERICA.KO16KSC5601

LD_LIBRARY_PATH=d:\oracle_instantclient_11_2

7) cd /usr/lib/oracle/버전/bin

8) sqlplus 실행

반응형

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

sql to csv  (0) 2020.04.07
SQL Developer 설치  (0) 2020.02.27
IOT (Indexed Organized Table)  (0) 2020.02.11
NESTED TABLE Column  (0) 2020.02.11