2012. 9. 18. 18:01 PROGRAMMING
[ORACLE] 에러 ORA-01843: 지정한 월이 부적합합니다 , not a valid month ... SqlException

ORA-01843: 지정한 월이 부적합합니다.

ORA-01843: not a valid month ...


대부분 오타일 경우가 많습니다.

변환할수 없는 날짜나 시간으로 TO_DATE함수를 사용하면 발생합니다.


대체 '월'이 뭔뜻인지...



슬래시와 대시가 틀리고, 년월일 순서가 잘못됨

 
UPDATE TABLE_NAME SET
INPUT_DATE=TO_DATE('09/18/2012 00:00','YYYY-MM-DD HH24:MI:SS')
WHERE SEQ=1
 



수정 후

 
UPDATE TABLE_NAME SET
INPUT_DATE=TO_DATE('09/18/2012 00:00','MM/DD/YYYY HH24:MI:SS')
WHERE SEQ=1
 


2012. 9. 14. 09:00 PROGRAMMING
[DB/ORACLE] 오라클 셀렉트인서트, SELECT, INSERT

오라클 셀렉트 인서트

이렇게 하면 갑자기 게임이 하고싶어집니다.

담배피러가야지~

 

 

EXAMPLE1

INSERT INTO table_adr
	SELECT *
	FROM table_kaudo
	WHERE name='doori'

 

 

EXAMPLE2

INSERT INTO table_adr (name,sex,age)
(
	SELECT
		name,
		sex,
		age 
	FROM
	(
		SELECT
			'안두봉' name,
			'남자' sex
		FROM DUAL
	), 
	(
		SELECT
			MAX(age) +1 age
		FROM table_adr
	)
)
2011. 6. 24. 14:33 COMPUTER
[ORACLE/SQL] 셀렉트 후 업데이트, 수정 가능한 조인 뷰, SELECT-UPDATE, Modifiable Join View

멋도모르고 SELECT-UPDATE문을 찾아서 사용하고있었는데,

엄청난 사실 - IN절에 사용한 컬럼명이 키가 아닐경우 UPDATE가 정상적으로 이뤄지지 않는다
는거였습니다. (엉뚱한 데이타가 업데이트되고 돼야할 레코드는 업데이트 안되고,,,)
물론 해당 테이블의 키가 컬럼 한개가 아니라면 갯수도 맞아야 하죠.

그래서 이걸 루프를 돌려야하나 말아야하나 하다가 알아낸게 '수정 가능한 조인 뷰' 입니다.

UPDATE의 테이블 대신에 수정할만큼의 데이타만 들고와서 SET을 하는 쿼리입니다.


기존 쿼리 (SELECT-UPDATE)

UPDATE TRNSAPLC T1
SET
T1.RESULT_CODE='2',
T1.REASON='넌 불합격이야'
WHERE T1.SEQ_NO IN (
SELECT T.SEQ_NO
FROM
TRNSAPLC T,
ADMTBASE T2,
REG TS
WHERE 1=1
AND T.SENO=T2.SENO
AND T.STU_NO=TS.STU_NO(+)
AND T.APPLY_DATE IS NOT NULL
AND T.YEAR='2010'
AND T.APLCDGE='1'
)
;


새로운 쿼리 (Modifiable Join View)

UPDATE (
SELECT T.RESULT_CODE , T.REASON
FROM
TRNSAPLC T,
ADMTBASE T2,
REG TS
WHERE 1=1
AND T.SENO=T2.SENO
AND T.STU_NO=TS.STU_NO(+)
AND T.APPLY_DATE IS NOT NULL
AND T.YEAR='2010'
AND T.APLCDGE='1'
) T1
SET
T1.RESULT_CODE='2',
T1.REASON='넌 불합격이야'
;
2010. 10. 5. 09:37 COMPUTER
[ORACLE] 오라클에 DATE타입으로 INSERT / SELECT, ORA-01861: 리터럴이 형식 문자열과 일치하지 않음
오라클 날짜형식으로 된 컬럼의 입/출력 쿼리


- 입력 (INSERT)

INSERT INTO TABLE1 (REG_DATE) VALUES ( TO_DATE('10-04-2010 20:37:50','MM-DD-YYYY HH24:MI:SS') )
INSERT INTO TABLE2 (REG_DATE) VALUES ( SYSDATE )


- 출력 (SELECT)
SELECT TO_CHAR(REG_DATE,'YYYY-MM-DD HH24:MI:SS') FROM TABLE1



TO_DATE에서 형식을 똑바로 맞추지 못하면 나는 에러입니다.

2009. 8. 19. 03:27 COMPUTER
toad for oracle instant client log

1. 토드설치
2. 오라클 클라이언트 다운로드 (적당한곳에 복사)
3. 시스템 변수 Path에 오라클 클라이언트 경로 추가
 (나는 C:\Program Files\Oracle Instant Client 10.2.0.4)
4. 시스템 변수 생성
 변수: TNS_ADMIN
 값: 오라클 클라이언트 경로 (역시 나는 C:\Program Files\Oracle Instant Client 10.2.0.4)
5. 오라클 클라이언트 설치경로에 tnsnames.ora파일 생성
 (나는 C:\Program Files\Oracle Instant Client 10.2.0.4\tnsnames.ora)

이름 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 호스트)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

oracle instant client downloads
http://www.oracle.com/technology/software/tech/oci/instantclient/index.html

2009. 6. 17. 15:39 PROGRAMMING
mssql to mysql process log

mssql
SQL: SELECT * INTO [생성될테이블] FROM [기존테이블]
새 테이블에서 필요없는 컬럼 제거 [테이블명에 오른쪽 클릭 > 디자인]

mssql 두번 치환 쿼리
UPDATE [테이블명]
SET [컬럼명]=REPLACE(CONVERT(varchar(max),
REPLACE(CONVERT(varchar(max),[컬럼명]),'[찾을내용1]','[바꿀내용1]'))
,'[찾을내용2]','[바꿀내용2]')
WHERE [컬럼명] LIKE '%[조건]%'

* asp나 mssql은 엔터값은 char(13)+char(10)

mssql 엔터값 검색, RETURN 13, NEWLINE 10, TAB 9
SQL: SELECT * FROM [테이블명] WHERE [컬럼명]='[조건]' AND [컬럼명] LIKE '%'+CHAR(13)+'%'

mssql 날짜데이타를 타임스탬프로 출력
SQL: SELECT TOP 100 DATEDIFF(second,'1970-01-01 09:00:00',[데이트컬럼명]) FROM [테이블명]
* 1970-01-01 09:00:00은 고정값입니다.

mysql
SQL: LOAD DATA INFILE '[백업파일명]' INTO TABLE [테이블명] FIELDS TERMINATED BY '[필드구분자:,]' OPTIONALLY ENCLOSED BY '[따옴표:"]' LINES TERMINATED BY '[각행구분:\n]'
SQL: LOAD DATA INFILE '[백업파일명]' INTO TABLE [테이블명] ([컬럼],[컬럼]...)
* 입력받을 테이블은 미리 생성되어있어야 함

mysql utf8로 복구/복원
CMD: mysql -u [사용자] -p --default-character-set=utf8 [데이타베이스] [테이블] < [덤프파일]
* 덤프파일은 내용이 "insert into ...."로 되어있어야함 (mysqldump로 뽑은;)

mysql replace 치환
SQL: UPDATE [테이블명] SET [컬럼명]=REPLACE(REPLACE([컬럼명],'[찾을내용1]','[바꿀내용1]'),' [찾을내용2]','[바꿀내용2]')

최근에 올라온 글

최근에 달린 댓글