본문 바로가기

전체 글

(63)
[JS] 디스코드 노래 봇 6 간만에 디스코드 봇을 건드려보는데 ytdl-core 라이브러리 대체 할 수 있도록 누군가 추가해놨다고 하니 사용해봤다.  require('ytdl-core') -> require('@distube/ytdl-core') 로 변경하면 된다.사용법도 동일하니 그냥 변경만 하면 잘 되니 그냥 사용하면 된다. 이제 여기에 embed 와 버튼을 추가해서 디스코드에서 gui 로 명령을 내릴수 있도록 만들 예정이다
테이블 생성시 유의사항 아래 와 같이 특정 글자 수로 저의되는 형태는 DATA TYPE CHAR를 권장 스키마 CREAT 할때 같이 하면 됨 create table table_name ( F_FIELD_NAME char(12), CONSTRAINT ROLE_NAME_TEST CHECK (F_FIELD_NAME in ('a','b','c') ) );--table_name 이라는 테이블에 F_FIELD_NAME 필드에 값이 들어갈때 a,b,c 인지 체크 하는 룰----- 이하 생성 후 수정할 때ALTER TABLE table_name ADD CONSTRAINTCONSTRAINT ROLE_NAME_TEST CHECK ( F_FIELD_NAME IN ( 'FIELD1', 'FIELD2', 'FIELD3', 'FIELD4', ..
오라클 bulk insert 속도개선 오라클에 몇 천만 이상 건의 데이터를 insert 할 때는 속도가 안나오는 경우가 많았다.아래같은 쿼리를 사용하여 속도를 개선할 수 있었다.--기존 4분11초INSERT INTO T_MAIN_LOG SELECT * FROM T_TMP_LOG WHERE F_CD = 'CD1';COMMIT;--1. NOLOGGING 로그삭제ALTER TABLE T_MAIN_LOG NOLOGGING ;--2. /*+ append */ 추가--10초로 개선됨INSERT /*+ append */ INTO T_MAIN_LOG SELECT *FROM T_TMP_LOG WHERE F_CD = 'CD1';--3. 삭제했던 logging 다시추가ALTER TABLE T_MAIN_LOG LOGGING ;--주의점 rollback 못함 D..
db 테이블 명세서 작성 쿼리 SELECT A.TABLE_NAME AS TABLE_NAME, A.TAB_CMT AS 테이블설명, A.COLUMN_NAME AS 컬럼명, B.POS AS PK, A.COL_CMT AS 컬럼설명, A.DATA_TYPE AS 데이터유형, A.데이터길이, A.NULLABLE AS NULL여부, A.COLUMN_ID AS 컬럼순서, A.DATA_DEFAULT AS 기본값FROM(SELECT S1.TABLE_NAME, S3.COMMENTS AS TAB_CMT, S1.COLUMN_NAME, S2.COMMENTS AS COL_CMT, S1.DATA_TYP..
join 다중 업데이트 DB 사용중에 다중 업데이트를 사용해야하는 경우입니다.​고쳐야되는 상황) A테이블에 F_ID가 B테이블의 F_NAME과 같을 경우 B테이블의 F_ID로 전환시켜줘야한다.A 테이블의 있는 데이터를 B 테이블과 매치되는 경우에 한하여 업데이트를 해야해서 처음에는 MERGE 문을 사용했습니다.MERGE INTO T_SONG AUSING T_MEMBER BON (A.F_ID = B.F_NAME)WHEN MATCHEDTHENUPDATE SET A.F_ID = B.F_ID;이렇게 했더니 오류가 납니다.[99999][38104] ORA-38104: ON 절에서 참조되는 열은 갱신할 수 없음: "A"."F_ID"​이런식으로 MERGE문은 ON 절에서 참조되는 열은 업데이트에 사용할 수 없다고 합니다. ..
오라클 구분자를 사용한 문자열을 행으로 변환(regexp, connect by level) 해당 데이터 중 F_NATCD 열의 데이터를 | 로 구분하여 행으로 표현 할 것이다.​1. connected by level오라클에서의 for문이라고 보면된다. 조건을 넘지않는한 계속 반복하여 쿼리를 수행한다.select level from dual connect by level 2. REGEXP_REPLACE 정규식LENGTH(REGEXP_REPLACE(f_natcd,'[^|]+',''))+1 정규식과 LENGTH를 활용하여 구분자 개수만큼 반복실행할 수 있도록 해준다.ex) 데이터가 aaa | bbb | ccc 라면 REGEXP_REPLACE(f_natcd,'[^|]+','') 의 반환값은 | | 이 되고 LENGTH 값은 2가 나오게 된다.​ 3. REGEXP_SUBSTR 정규식2번의 REPLACE..
오라클,MySQL 특정 문자 정렬 리스트를 출력하다보면 특정문자로 정렬해서 나타내야되는 경우가있다.​예를들어 데이터 중 필드에 '완료'가 된 데이터를 먼저 출력해야될때가 있다면오라클의경우SELECT * FROM T_TABLE ORDER BY DECODE(F_STATUS,'완료',1);이런식으로 오라클 내장 함수인 DECODE를 사용하여 F_STATUS에 완료인 필드들을 1순위로 출력해주면 된다. ​Mysql(MariaDB)의경우SELECT * FROM T_TABLE ORDER BY FIELD(F_STATUS,'가','가나다') DESC;Mysql의 경우 FIELD함수를 사용하여 위와같이 1순위 '가', 2순위 '가나다' 라는 단어가 필드에 들어가는 데이터 우선정렬을 출력해줄 수 있다.​오라클과 Mysql의 다른점은 오라클 DECODE의 ..
curl 대체 코드 제목 그대로 php에서 curl 을 사용하고 싶은데 사용하지 못하는 경우 사용한 코드이다.해당 문제는 APM 를 배포하는 부분에서 발생했다.APM 을 배포하여 아파치와 PHP가 새로운 환경에 설치되는데 해당 PC에서 오류가 났었다.분명 내 PC에서 테스트시 문제가 없었지만 새로운 환경으로 배포하면 오류가 생기는 상황이라 당황스러웠다.코드도 완벽히 같은 상황에서 확인해보니 curl 사용하여 외부 api 를 호출하는 부분에서 오류가 생겼다.내가 테스트했던 pc인 경우 curl 을 설치했던 이력이 있어서 문제가 없었지만 새롭게 설치되는 환경에서는 해당 설치가 이뤄지지 않았기에 오류가 생겼던 것이다.매 환경마다 curl을 설치할 수는 없기에 curl을 사용하지 않기로 했다. 다음은 대체 코드이다GET 호출// ..

반응형