SELECT
 운용사펀드코드,
 (SELECT 설정일 FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0','Excel 12.0;Database=D:\20170703\설정일생성.xlsx;','SELECT * FROM [Sheet1$]') WHERE 펀드코드 = A.운용사펀드코드) AS 설정일
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0','Excel 12.0;Database=D:\20170703\펀드설정전체.xlsx;','SELECT * FROM [Sheet1$]') A

----------------------------------------------- 기본셋팅

1. Ad Hoc Distributed Queries 옵션 활성화

EXEC sp_configure 'show advanced options', 1

GO

 

RECONFIGURE

GO

 

EXEC sp_configure 'Ad Hoc Distributed Queries', 1

GO

 

RECONFIGURE

GO

2. Mirosoft Access Database Engine 2010 Redistributable  설치

http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=13255

자 이제 준비는 다 되었다. 이제 쿼리로 엑셀을 테이블처럼 사용하면 된다.


출처 - http://yoonsy.tistory.com/12

[MYSQL]원격지 SELECT

Database 2017.02.07 08:29 Posted by 애플자라

CREATE TABLE `tb_result_117` (
  `STAND_DATE` varchar(8) NOT NULL COMMENT '작업일자',
  `ITEM_CD` char(12) NOT NULL COMMENT '배치작업의 코드',
  `SUB_SECTION` varchar(32) NOT NULL COMMENT '배치작업의 코드 하부 작업(하부분류또는 파일명)',
  `START_TIME` varchar(6) NOT NULL COMMENT '시작시간',
  `END_TIME` varchar(6) DEFAULT NULL COMMENT '마감시간',
  `RESULT_MESSAGE` varchar(512) DEFAULT NULL COMMENT '처리결과 메시지',
  `TOTAL_COUNT` int(11) DEFAULT NULL COMMENT '전체건수',
  `PROCESSED_COUNT` int(11) DEFAULT NULL COMMENT '처리건수',
  `PROCESS_NAME` varchar(50) DEFAULT NULL,
  `SEND_DATE` datetime DEFAULT NULL,
  `FLAG` char(1) CHARACTER SET latin1 DEFAULT 'N',
  PRIMARY KEY (`STAND_DATE`,`ITEM_CD`,`SUB_SECTION`,`START_TIME`)
) ENGINE=FEDERATED DEFAULT CHARSET=utf8 COMMENT='일별 배치' CONNECTION='mysql://DBID:DB패스워드@DBIP:포트/dg_db_batch/tb_result';

 

참고 - http://itzone.tistory.com/672

 

[MYSQL]사용자 계정생성

Database 2016.11.11 19:39 Posted by 애플자라

[5.7 이전 버젼]
update mysql.user set password=password('새로운패스워드') where user='root';
FLUSH PRIVILEGES;

[5.7 이후 버젼]
update user set authentication_string=password('새로운패스워드') where user='root';
FLUSH PRIVILEGES;

(5.7 이후 버젼에는 password 필드가 존재하지 않는다.)
설정 후 MySQL 접속 후 명령을 실행하게 되면 다음과 같은 장애가 발생한다.

mysql> SELECT 1;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

위와 같은 오류가 발생하는 경우 다음과 같은 명령어를 실행한다.

mysql> SET PASSWORD = PASSWORD('새로운패스워드');
Query OK, 0 rows affected (0.01 sec)

mysql> SELECT 1;
+---+
| 1 |
+---+
| 1 |

 

'Database' 카테고리의 다른 글

[MYSQL]DB 로그인(멀티인스턴스)  (0) 2016.11.14
[MYSQL]LINUX 시작서비스등록  (0) 2016.11.14
[MYSQL]사용자 계정생성  (0) 2016.11.11
[MYSQL]패스워드 변경  (0) 2016.11.11
[MYSQL]multiple instances(mysqld_multi)  (0) 2016.11.08
[MYSQL]ROWNUM  (0) 2016.10.21

[ORACLE]조인 결과로 테이블 UPDATE하기

Database 2014.10.29 16:54 Posted by 애플자라

UPDATE TB_MARKETING AA

SET (AGENCY_ID) = (SELECT AGENCY_ID FROM TEMP_GROUP B WHERE B.GROUP_NAME =AA.GROUP_NAME)

 

 

SELECT E.ID, E.SUBID, T.SUBID

UPDATE TB_MARKETING SET SUBID = T.SUBID

FROM TB_MARKETING E

INNER JOIN #TEMP_GROUP T ON ( E.SEQ = T.SEQ )

[ORACLE] MERGE INTO

Database 2013.03.08 11:39 Posted by 애플자라

-- MERGE UPDATE
MERGE INTO IFT_FUND_STANDARD_PRICE_RESULT A
USING (
    SELECT TIMS_DATE,FUND_CODE,BM_INDEX,BM_RATE FROM IFT_FUND_STANDARD_PRICE_RESULT
    WHERE FUND_CODE ='10110'
    AND TIMS_DATE > '20130115'
) B
ON (
    A.TIMS_DATE = B.TIMS_DATE
    AND A.FUND_CODE ='10112'
)
WHEN MATCHED THEN
    UPDATE SET A.BM_INDEX = B.BM_INDEX, A.BM_RATE = B.BM_RATE

=============================================================================================

MERGE INTO를 사용하면 INSERT, UPDATE를 각 케이스 별로 처리할 수 있다.

한꺼번에 데이터를 덮어쓰거나 갱신할때 UPDATE와 INSERT가 동시에 처리되어야 할때가 있는데,

그러한 경우에 유용하게 쓸수 있는 구문이다.


MERGE INTO 대상테이블 A

USING (

) B

ON (

-- 매칭 조건

)

WHEN MATCHED THEN

-- 조건에 매칭될 경우 실행

UPDATE 문 (UPDATE SET ...)

WHEN NOT MATCHED THEN

-- 조건에 매칭되지 않을 경우 실행

INSERT 문 (특이한 점은 INSERT INTO가 아니다.)


예제

MERGE INTO TCOGRNTNUM A

USING (

    SELECT '0009' AS GTNO_KD_CD, GTNO_KEY_VAL, MAX(POL_SEQ) AS SEQ

    FROM (

        SELECT PDGP_CD || SUBSTR(TO_CHAR(INS_BGN_DT, 'YYYYMMDD'), 3,2) AS GTNO_KEY_VAL, SUBSTR(POL_NO, 6, 7) POL_SEQ FROM TCTTCOT

        WHERE

            BIZ_SYS_CD = 'CTK'

            AND JNT_TNG_YN = '2'

            AND INS_BGN_DT BETWEEN TO_DATE('20121001', 'YYYYMMDD') AND TO_DATE('20121115', 'YYYYMMDD')

    )

    GROUP BY GTNO_KEY_VAL

) B

ON (

    A.GTNO_KD_CD = B.GTNO_KD_CD

    AND A.GTNO_KEY_VAL = B.GTNO_KEY_VAL

)

WHEN MATCHED THEN

    UPDATE SET A.SEQ = B.SEQ, A.SYS_DEL_DIV_CD = '0', A.INPPE_ORG_ID = '0000000000', A.SYS_OCC_DTM = SYSDATE,

    A.OCC_IP = '0.0.0.0', A.APP_ID = 'MIG', A.DATA_CHNG_DTM = SYSDATE

WHEN NOT MATCHED THEN

    INSERT (A.GTNO_KD_CD, A.GTNO_KEY_VAL, A.SEQ, A.SYS_DEL_DIV_CD, A.INPPE_ORG_ID, A.SYS_OCC_DTM, A.OCC_IP, A.APP_ID, A.DATA_CHNG_DTM)

    VALUES (B.GTNO_KD_CD, B.GTNO_KEY_VAL, B.SEQ, '0', '0000000000', SYSDATE, '0.0.0.0', 'MIG', SYSDATE) 

;

[ORACLE]데이터 페이징 처리방법(게시판)

Database 2012.10.11 17:00 Posted by 애플자라
SELECT B.*
FROM ( SELECT ROW_NUMBER() OVER(ORDER BY DATE DESC) RNUM,A.*
            FROM TABLE A ) B
WHERE RNUM BETWEEN 1 AND 50

[ORACLE]SELECT INSERT 속도개선, nologging

Database 2012.09.05 10:19 Posted by 애플자라

alter table "해당 테이블" nologging -> 넣을 테이블

alter session set db_file_multiblock_read_count = 128; -> 옵션

insert /*+append*/ into "해당테이블"

옵션 주면 일반 full에 16배 더 빨라져
천 만건이면..어지간한 데이터도 30분 안 쪽으로 끝남


INSERT /*+APPEND/ INTO APLUSORA.NEW_ADDRESS_20120823
(
      BUPJUNG_CODE, SIDO, SIGUNGU,
   DONG, LI, SAN,
   BUNJI_NO1, BUNJI_NO2, DORO_CODE,
   DORO_NAME, JIHA, GUNMUL_NO1,
   GUNMUL_NO2, GUNMUL_NAME, GUNMUL_NAME_DTL,
   GUNMUL_GWANRI_NO, DONG_SEQ, HANGJUNG_CODE,
   HANGJUNG_NAME, ZIP_CODE, ZIP_CODE_SEQ,
   DELIVER_NAME, UPDATE_CODE, UPDATE_DAY,
   DORO_NAME_BEFORE, SIGUNGU_GUNMUL_NAME, APARTMENT
)
SELECT /*+FULL(APLUSORA.NEW_ADDRESS_20120823@APLUS_TEST_LINK) PARALLEL(APLUSORA.NEW_ADDRESS_20120823@APLUS_TEST_LINK, 4)/
   BUPJUNG_CODE, SIDO, SIGUNGU,
   DONG, LI, SAN,
   BUNJI_NO1, BUNJI_NO2, DORO_CODE,
   DORO_NAME, JIHA, GUNMUL_NO1,
   GUNMUL_NO2, GUNMUL_NAME, GUNMUL_NAME_DTL,
   GUNMUL_GWANRI_NO, DONG_SEQ, HANGJUNG_CODE,
   HANGJUNG_NAME, ZIP_CODE, ZIP_CODE_SEQ,
   DELIVER_NAME, UPDATE_CODE, UPDATE_DAY,
   DORO_NAME_BEFORE, SIGUNGU_GUNMUL_NAME, APARTMENT
FROM APLUSORA.NEW_ADDRESS_20120823@APLUS_TEST_LINK;

이렇게 Full 태우고 parallel 옵션주면 더 빨라짐

맨 처음 alter -> alter session set -> insert /append/ select /full....이런 순서로

출처 - 하정민 님


예를 들어 다른 계정에서 특정 유저가 갖고있는 테이블 "COM_COD_DPT" 의 select 권한을 주고 싶을때 다음과 같이 grant 를 주시면 됩니다.

<< kss user login >>

GRANT SELECT ON EMS_V_KIUM_CUSTOMER_LETTER TO EDM ;

이렇게 하신후 다른 계정 (예, sukwoo 라는 다른 유저) 에서 해당되는 테이블을 select 하시면 select 가 될겁니다..........

<< sukwoo (다른 유저) user login >>

select *
from APLUSORA.EMS_V_KIUM_CUSTOMER_LETTER ;

하시면 select 가 될겁니다.


<예>

GRANT ALTER ON APLUSORA.COM_USR_M TO PUBLIC;
GRANT DELETE ON APLUSORA.COM_USR_M TO PUBLIC;
GRANT INSERT ON APLUSORA.COM_USR_M TO PUBLIC;
GRANT SELECT ON APLUSORA.COM_USR_M TO PUBLIC;
GRANT UPDATE ON APLUSORA.COM_USR_M TO PUBLIC;
GRANT INDEX ON APLUSORA.COM_USR_M TO PUBLIC;
GRANT REFERENCES ON KSSHS.COM_USR_M TO PUBLIC;

GRANT ON COMMIT REFRESH ON APLUSORA.COM_USR_M TO PUBLIC;
GRANT QUERY REWRITE ON APLUSORA.COM_USR_M TO PUBLIC;
GRANT DEBUG ON APLUSORA.COM_USR_M TO PUBLIC;
GRANT FLASHBACK ON APLUSORA.COM_USR_M TO PUBLIC;

 

GRANT SELECT ON APLUSORA.CUSTOMER TO EDM;

=> EDM계정에서 APLUSORA.CUSTOMER SELECT권한주기

 

IBM DB2에서 select and update,delete 하기

Database 2010.07.19 11:53 Posted by 애플자라

update 
(select * from pmegatest1
where c1=2 and c2='pmega'
fetch first 1 rows only)
set c1=11
with UR


delete from 
(select * from pmegatest1
where c1=2 and c2='pmega'
fetch first 1 rows only)
with UR

[출처] IBM DB2에서 select and update,delete 하기 (큰틀) |작성자 가이사


  DELETE FROM 
  (SELECT * FROM ${LIST_TABLE}
  WHERE POST_ID = '${POST_ID}'
  FETCH FIRST ${COMMIT_CNT} ROWS ONLY)
  WITH UR

'Database' 카테고리의 다른 글

[MSSQL] 관리를 위한 쿼리들  (0) 2010.09.24
[ORACLE]OUTER JOIN  (0) 2010.08.26
IBM DB2에서 select and update,delete 하기  (0) 2010.07.19
[MSSQL] MSSQL2000 ->2005 마이그레이션 attach  (0) 2010.07.05
[MSSQL]일별,주별,월별 통계  (0) 2010.06.29
MSSQL 데이터 백업  (0) 2010.06.07

[MSSQL] UPDATE~SELECT 문의 사용

Database 2009.05.13 10:30 Posted by 애플자라

MSSQL ==> B 테이블 SELECT 한것을 A테이블에 업데이트 치기@_@;; 죽을뻔함

UPDATE A SET
A.CUSTOMER_KEY = B.MEMBER_ID,
A.SEND_DT = CONVERT(CHAR(8),B.DELIVER_TIME,112),
A.SEND_TM = REPLACE(CONVERT(VARCHAR(20),B.DELIVER_TIME,108),':',''),
A.ERROR_CD = B.ERROR_CODE
 from nvecaresendlog A, smsauto_list_03 B
where B.workday ='20090512'
and B.seqno='16'
AND A.CUSTOMER_KEY = B.MEMBER_ID

참고 - http://blog.naver.com/rainbow8830/70030692861

-- 다른유형
UPDATE A
 SET A.JobTitle = B.UserJobTitle
FROM BackDatabase.dbo.DATTACHINFO A, Appro.dbo.ATTACHINFO B
where A.DocID=B.DocID
and A.FileSN=B.FileSN 

 

update customer aa
set (home_address)= (select home_address from customer_temp where customer_id=aa.customer_id);