<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet href="http://rss.egloos.com/style/blog.xsl" type="text/xsl" media="screen"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
	<title>devide by zero</title>
	<link>http://devideby0.egloos.com</link>
	<description>죽어도 시체 거둘 자 없다.</description>
	<language>ko</language>
	<pubDate>Fri, 30 Oct 2009 10:01:20 GMT</pubDate>
	<generator>Egloos</generator>
	<image>
		<title>devide by zero</title>
		<url>http://pds10.egloos.com/logo/200808/17/95/d0042195.jpg</url>
		<link>http://devideby0.egloos.com</link>
		<width>80</width>
		<height>80</height>
		<description>죽어도 시체 거둘 자 없다.</description>
	</image>
  	<item>
		<title><![CDATA[ MySQL - 덤프 입력 혹은 대량 인서트시 속도 저하. ]]> </title>
		<link>http://devideby0.egloos.com/2461502</link>
		<guid>http://devideby0.egloos.com/2461502</guid>
		<description>
			<![CDATA[ 
  원인은 인덱스 재구성.<br><br>bin/mysqld_safe --delay-key-write-for-all-tables --user=mysql &amp;<br><br>LOCK 건 테이블에 대해서 해제될 때까지 키 체크 모류.<br>			 ]]> 
		</description>
		<category>LINUX</category>

		<comments>http://devideby0.egloos.com/2461502#comments</comments>
		<pubDate>Fri, 30 Oct 2009 10:01:20 GMT</pubDate>
		<dc:creator>overdose</dc:creator>
	</item>
	<item>
		<title><![CDATA[ 리눅스 RSA 인증키 정보 ]]> </title>
		<link>http://devideby0.egloos.com/2397061</link>
		<guid>http://devideby0.egloos.com/2397061</guid>
		<description>
			<![CDATA[ 
  /root/.ssh/known_hosts			 ]]> 
		</description>
		<category>LINUX</category>

		<comments>http://devideby0.egloos.com/2397061#comments</comments>
		<pubDate>Wed, 12 Aug 2009 05:30:08 GMT</pubDate>
		<dc:creator>overdose</dc:creator>
	</item>
	<item>
		<title><![CDATA[ bash 스크립트에서 mysql 쿼리 결과 변수에 저장하기 ]]> </title>
		<link>http://devideby0.egloos.com/2381744</link>
		<guid>http://devideby0.egloos.com/2381744</guid>
		<description>
			<![CDATA[ 
  <p>TEMP_VAR=$(exec /usr/bin/mysql --socket=/tmp/mysql.sock -u root -p"password"&nbsp;dbname -N -s -e "select min(columnname) from&nbsp;TAB_NAME where&nbsp;CONDITION = 57")<br><br>-N (--skip-column-names) : 결과화면에 컬럼 이름을 없애주는 옵션<br>-s (--silent)&nbsp;: 결과화면에서 격자를 제거하는 옵션<br><br>1. 결과는 라인 별로 저장된다.<br>2.&nbsp;결과가 여러 라인일 경우에도&nbsp;for in 명령을 사용해서 분류해낼 수 있다.<br>3. 컬럼의 분리는 구분자로 파싱해내는 수 밖에 없는듯하다.<br><br>ex) 모든 데이터베이스의 모든 테이블에 대한 덤프를 추출하는 방법. -출처:http://www.nanzoa.com/<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CentOS 5.2에서는 부분적으로 문법을 수정해주지 않으면 동작하지 않았다.<br><br>db_root_pw='비밀번호'</p><p>db_list=`echo "show databases;" | mysql -N -uroot -p"$db_root_pw"`<br>&nbsp;for db in $db_list ;do<br>&nbsp; table_list=`echo "show tables" | mysql -N -uroot -p"$db_root_pw" $db`<br>&nbsp; for table in $table_list ; do<br>&nbsp;&nbsp;&nbsp; mysqldump -uroot -p"$db_root_pw" $db $table &gt; $db.${table}.sql<br>&nbsp; done<br>&nbsp;done<br></p>			 ]]> 
		</description>

		<comments>http://devideby0.egloos.com/2381744#comments</comments>
		<pubDate>Fri, 24 Jul 2009 05:55:56 GMT</pubDate>
		<dc:creator>overdose</dc:creator>
	</item>
	<item>
		<title><![CDATA[ Linux - 커널 스택 크기 제한 ]]> </title>
		<link>http://devideby0.egloos.com/2351133</link>
		<guid>http://devideby0.egloos.com/2351133</guid>
		<description>
			<![CDATA[ 
  <p>cat /usr/include/linux/sched.h<br>------------------------------------<br>#define _STK_LIM&nbsp; (8*1024*1024) // 8M<br><br>리눅스에서는 커널 레벨에서 각 프로세스에 할당 가능한 스택 사이즈에 제한을 둔다.<br><br>(사이즈는 위와 다를 수 있다. 여하간 제한을 둔다.)<br><br>그 사이즈를 넘어 메모리를 할당하면 세그멘테이션 에러를 내며 프로세스가 죽는다.<br><br>뭐... 내가 그렇게 할당했다는건 아니다.<br><br>malloc()을 이용해 메모리를 동적으로 할당하면 그냥 편하다.<br><br>그리고 새로운 문제로 머리가 좀 아플것 같다.<br></p>			 ]]> 
		</description>
		<category>LINUX</category>

		<comments>http://devideby0.egloos.com/2351133#comments</comments>
		<pubDate>Fri, 19 Jun 2009 10:54:32 GMT</pubDate>
		<dc:creator>overdose</dc:creator>
	</item>
	<item>
		<title><![CDATA[ bash 스크립트 - 스크립트 리턴값 ]]> </title>
		<link>http://devideby0.egloos.com/2277179</link>
		<guid>http://devideby0.egloos.com/2277179</guid>
		<description>
			<![CDATA[ 
  <p>vi /home/test/test1.sh</p><p><br>#!/bin/bash</p><p>if [ -z "$1" ]<br>then<br>&nbsp; echo "usage: `basename $0` queryfilename"<br>&nbsp; exit 111<br>fi<br>exit 0<br><br></p><p>vi /home/test/test2.sh</p><p><br>#!/bin/bash<br>/home/test/test1.sh<br>echo $?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 도스 스크립트에서는 echo %ERRORLEVEL%</p><p><br><br>./test2.sh<br></p>			 ]]> 
		</description>
		<category>LINUX</category>

		<comments>http://devideby0.egloos.com/2277179#comments</comments>
		<pubDate>Tue, 31 Mar 2009 05:13:41 GMT</pubDate>
		<dc:creator>overdose</dc:creator>
	</item>
	<item>
		<title><![CDATA[ bash 스크립트 - 파일 라인 단위로 입력받기. ]]> </title>
		<link>http://devideby0.egloos.com/2276332</link>
		<guid>http://devideby0.egloos.com/2276332</guid>
		<description>
			<![CDATA[ 
  <p>#!/bin/bash</p><p>exec &lt; $1</p><p>while read line<br>do<br>&nbsp;&nbsp;&nbsp; echo $line<br>done</p><p><br>############## ex)<br><br>test.txt:<br>a A 1 aaa AAA 111<br>b B 2 bbb BBB 222</p><p><br>script:<br>#!/bin/bash </p><p>while read A B C ETC<br>do <br>&nbsp;&nbsp;&nbsp; echo "${A}-${B}-${C}-${ETC}"<br>done &lt; test.txt</p><p><br>result:<br>a-A-1-aaa AAA 111<br>b-B-2-bbb BBB 222<br></p>			 ]]> 
		</description>

		<comments>http://devideby0.egloos.com/2276332#comments</comments>
		<pubDate>Mon, 30 Mar 2009 08:34:46 GMT</pubDate>
		<dc:creator>overdose</dc:creator>
	</item>
	<item>
		<title><![CDATA[ ORA-12560 ]]> </title>
		<link>http://devideby0.egloos.com/2257187</link>
		<guid>http://devideby0.egloos.com/2257187</guid>
		<description>
			<![CDATA[ 
  <p>위의 에러는 오라클 데이터베이스나&nbsp; SQL*PLUS문제가 아니다</p><p>아마도&nbsp;OS에 설치된 firewall때문이다.</p><p>linux 자체 firewall이라면</p><p>해당 파일을 열어 <span style="COLOR: #ff0000"><strong>LISTENER:1521</strong></span>을 추가하면 되고</p><p>X(그놈, KDE)가 설치되어있다면 GUI로 설정이 가능하다.</p><p>X 상에서 설정방법----</p><p>상단의 <span style="COLOR: #ff0000"><strong>데스크탑-시스템도구-보안수준-TCP:1521</strong></span>을 추가하면 된다.</p><div class="autosourcing-stub"><p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-WEIGHT: normal; FONT-SIZE: 12px; PADDING-BOTTOM: 0px; MARGIN: 11px 0px 7px; PADDING-TOP: 0px; FONT-STYLE: normal; FONT-FAMILY: Dotum"><strong style="PADDING-RIGHT: 7px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px">[출처]</strong> <a href="http://blog.naver.com/suchme80/60017747360" target="_blank">[오라클]ORA-12560: TNS:프로토콜 어댑터 오류</a><span style="PADDING-RIGHT: 7px; PADDING-LEFT: 5px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px">|</span><strong style="PADDING-RIGHT: 7px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px">작성자</strong> <a href="http://blog.naver.com/suchme80" target="_blank">죠</a></p></div>			 ]]> 
		</description>
		<category>ORACLE</category>

		<comments>http://devideby0.egloos.com/2257187#comments</comments>
		<pubDate>Tue, 10 Mar 2009 02:15:37 GMT</pubDate>
		<dc:creator>overdose</dc:creator>
	</item>
	<item>
		<title><![CDATA[ sql 로더 사용법 ]]> </title>
		<link>http://devideby0.egloos.com/2230995</link>
		<guid>http://devideby0.egloos.com/2230995</guid>
		<description>
			<![CDATA[ 
  <p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-WEIGHT: normal; FONT-SIZE: 12px; PADDING-BOTTOM: 0px; MARGIN: 11px 0px 7px; PADDING-TOP: 0px; FONT-STYLE: normal; FONT-FAMILY: Dotum"><strong style="PADDING-RIGHT: 7px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px">[출처]</strong> <a href="http://blog.naver.com/btchae/80010828387" target="_blank">SQL Loader를 이용해서 csv파일 테이블에 Insert</a><span style="PADDING-RIGHT: 7px; PADDING-LEFT: 5px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px">|</span><strong style="PADDING-RIGHT: 7px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px">작성자</strong> <a href="http://blog.naver.com/btchae" target="_blank">아놀드채</a></p><p><br>SQL Loader라는 툴은 오라클을 설치하면 사용할 수가 있는 툴이다. </p><p>서버또는 클라이언트를 설치시 사용자 설치에서 선택해서 설치하거나 풀 옵션으로 설치하면 된다.</p><p>&nbsp;</p><p>SQL Loader는 csv파일안의 내용을 테이블에 추가할때 유용하게 사용할 수가 있다.</p><p>PreparedStatement를 사용해서 executeBatch()명령을 이용해서 파일안의 내용을 추가할 수도 있지만 경우에 따라서는 SQL Loader를 이용하는 방법도 좋은 대안이 될 수 있다.</p><p>&nbsp;</p><p>참고로 파일에서 10000건의 데이타를 EMP 테이블에 insert시 excuteBatch가 더 빨랐다.</p><p>&nbsp;</p><p>사용방법은 </p><p>control file : 데이타 적재를 위한 제어 파일 (필수)<br>data file&nbsp;&nbsp;&nbsp; : 데이타를 담고 있는 파일(필수)<br>log file&nbsp;&nbsp;&nbsp;&nbsp; : 로그 파일(필수)<br>bad file&nbsp;&nbsp;&nbsp;&nbsp; : 적재되지 못한 데이타들<br>discard file : 적재되지 못한 데이타들에 대한 정보를 저장</p><p>위의 파일을 만들어야 합니다.</p><p>&nbsp;</p><p>명령은</p><p>sqlldr scott/tiger control= control파일명.cti&nbsp; log=log파일명.log data=data파일명.csv </p><p>scott/tiger는 디비접속정보입니다. 아이디와 암호죠.</p><p>옵션을 생략하면 디폴트 값으로 실행이 됩니다. errors는 50으로 되어있죠. 만약 대량의 정보를 추가시 에러가 50이상이 발생하면 sqlldr에러가 초과된 부분에서 작업을 빠져나옵니다. 넉넉히 잡아주세요.</p><p>&nbsp;</p><p>&nbsp;</p><p>자 이제 control파일을 만드는 방법입니다.</p><p><a class="con_link" href="http://j2k.naver.com/j2k_frame.php/korean/www.ne.jp/asahi/hishidama/home/tech/oracle/sqlldr.html#OPTIONS" target="_blank"><u><span style="COLOR: #800080">OPTIONS</span></u></a>(LOAD=100,SKIP=1,ERRORS=-1,ROWS=10)</p><p>LOAD DATA<br>INFILE Test.cti -&gt; Control 파일명</p><p><a class="con_link" href="http://j2k.naver.com/j2k_frame.php/korean/www.ne.jp/asahi/hishidama/home/tech/oracle/sqlldr.html#BADFILE" target="_blank"><u><span style="COLOR: #800080">BADFILE</span></u></a> 'emp.bad'</p><p>APPEND -&gt; 명령구분 <br>INTO TABLE EMP -&gt; 테이블</p><p>FIELDS TERMINATED BY ',' -&gt; csv파일안의 데이터들의 구분자</p><p>TRAILING NULLCOLS -- 널값 허용</p><p>( EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO ) -&gt; insert되는 필드</p><p>&nbsp;</p><p><span style="COLOR: #006699">만약 EMPNO 칼럼만 파일에 존재하지 않고 자바클래스에서 생성한 값이고 이것도 같이 파일에 있는 내용과 같이 테이블에 등록하고자 한다면 </span></p><p><span style="COLOR: #006699">( EMPNO&nbsp; constant 입력값,ENAME,JOB,...) 이런식으로 해주면 됨</span></p><p><span style="COLOR: #006699">파일에 그 칼럼이 널값인데 다른값으로 대치하고 싶다면</span></p><p><span style="COLOR: #006699">( EMPNO char 'nvl(:EMPNO,해당값)',ENAME,...)</span></p><p>&nbsp;</p><p>아래는 네이버제팬에서 참고</p><p><table id="table1" border="1"><tbody><tr><th><span style="FONT-SIZE: 100%">키워드</span></th><th colspan="2"><span style="FONT-SIZE: 100%">설명</span></th><th><span style="FONT-SIZE: 100%">비고</span></th></tr><tr><td rowspan="5"><span style="FONT-SIZE: 100%">OPTIONS</span></td><td colspan="2"><span style="FONT-SIZE: 100%">sqlldr에 건네주는 인수를 ,</span><a class="con_link" target="_blank" name="OPTIONS"><span style="FONT-SIZE: 100%">컨트롤 파일안에 기술</span></a><span style="FONT-SIZE: 100%">할 수 있다. <span class="chg">[2004.11.15]</span></span></td><td><span style="FONT-SIZE: 100%">아마 , 「sqlldr -?」으로 나오는 옵션을 지정할 수 있다. </span></td></tr><tr><td><span style="FONT-SIZE: 100%">LOAD</span></td><td><span style="FONT-SIZE: 100%">로드하는 레코드수</span></td><td><span style="FONT-SIZE: 100%">-1의 경우 , 모두</span></td></tr><tr><td><span style="FONT-SIZE: 100%">SKIP</span></td><td><span style="FONT-SIZE: 100%">스킵 하는 레코드수</span></td><td><span style="FONT-SIZE: 100%">-1의 경우 ,4294967295(0xffffffff)</span></td></tr><tr><td><span style="FONT-SIZE: 100%">ERRORS</span></td><td><span style="FONT-SIZE: 100%">허용 하는 에러의 수</span></td><td><span style="FONT-SIZE: 100%">-1의 경우 , 모두</span></td></tr><tr><td><span style="FONT-SIZE: 100%">ROWS</span></td><td><span style="FONT-SIZE: 100%">몇건마다 위탁할까</span></td><td><span style="FONT-SIZE: 100%">-1의 경우 ,4294967295(0xffffffff)</span></td></tr><tr><td><span style="FONT-SIZE: 100%">LOAD DATA</span></td><td colspan="2"><span style="FONT-SIZE: 100%">약속의 기호<span class="cmt">(? )</span></span></td><td><span style="FONT-SIZE: 100%">　</span></td></tr><tr><td><span style="FONT-SIZE: 100%">CHARACTERSET</span></td><td colspan="2"><span style="FONT-SIZE: 100%">문자 코드를 지정하고 싶은 경우로 지정한다. <span class="chg">[2005.3.18]</span></span></td><td><span style="FONT-SIZE: 100%">예：「CHARACTERSET JA16SJIS」 JA16EUC,UTF8,JA16DBCS<span class="cmt">(EBCDIC)</span>등</span></td></tr><tr><td><a class="con_link" target="_blank" name="INFILE"><span style="FONT-SIZE: 100%">INFILE</span></a></td><td colspan="2"><span style="FONT-SIZE: 100%">입력 데이터인CSV파일이나 <span style="COLOR: #330099; FONT-FAMILY: Arial">Fixed-Format Fields(</span>position으로 찾아갈수 있는파일)</span></td><td><span style="FONT-SIZE: 100%">sql*loader을 실행한 디렉토리로부터의 상대 패스로 디렉토리를 지정 가능. </span></td></tr><tr><td><a class="con_link" target="_blank" name="BADFILE"><span style="FONT-SIZE: 100%">BADFILE</span></a></td><td colspan="2"><span style="FONT-SIZE: 100%">어떠한 에러가 있어DB에 넣어지지 않는 데이터가 있었을 경우 , 그 데이터가 이 파일에 출력된다. </span></td><td><span style="FONT-SIZE: 100%">　</span></td></tr><tr><td><span style="FONT-SIZE: 100%">DISCARDFILE</span></td><td colspan="2"><a class="con_link" href="http://j2k.naver.com/j2k_frame.php/korean/www.ne.jp/asahi/hishidama/home/tech/oracle/sqlldr.html#WHEN" target="_blank" name="DISCARDFILE"><u><span style="FONT-SIZE: 100%; COLOR: #800080">WHEN</span></u></a><span style="FONT-SIZE: 100%">에 의해 로드 대상외가 된 폐기 데이터가 , 이 파일에 출력된다. <span class="chg">[2005.3.18]</span></span></td><td><span style="FONT-SIZE: 100%">　</span></td></tr><tr><td rowspan="5"><span style="FONT-SIZE: 100%">INSERT<br>APPEND<br>REPLACE<br>TRUNCATE</span></td><td colspan="2"><span style="FONT-SIZE: 100%">이하의 몇개의</span><a class="con_link" target="_blank" name="모드"><span style="FONT-SIZE: 100%">모드</span></a><span style="FONT-SIZE: 100%">를 지정한다. </span></td><td><span style="FONT-SIZE: 100%">　</span></td></tr><tr><td><span style="FONT-SIZE: 100%">INSERT</span></td><td><span style="FONT-SIZE: 100%">신규에 데이터를 로드한다. </span></td><td><span style="FONT-SIZE: 100%">테이블은 하늘일 필요가 있다. 이미 데이터가 있는 경우는 에러가 된다. (중복 하지 않는 데이터여도! )</span></td></tr><tr><td><span style="FONT-SIZE: 100%">APPEND</span></td><td><span style="FONT-SIZE: 100%">데이터를 추가한다. </span></td><td><span style="FONT-SIZE: 100%">이미 데이터가 있는 경우는 ,duplicate하지 않는 데이터만이 추가된다. </span></td></tr><tr><td><span style="FONT-SIZE: 100%">REPLACE</span></td><td rowspan="2"><span style="FONT-SIZE: 100%">테이블의 내용을 모두 삭제해 , 신규에 데이터를 로드한다. </span></td><td><span style="FONT-SIZE: 100%">삭제는 ,DELETE에 상당. </span></td></tr><tr><td><span style="FONT-SIZE: 100%">TRUNCATE</span></td><td><span style="FONT-SIZE: 100%">삭제는 ,TRUNCATE에 상당. truncate할 수 있는 권한이 필요. 참조 정합성 제약을 설정해 있는 경우는 , 그것을 오프로 해 두어야 한다. </span></td></tr><tr><td noWrap><a class="con_link" target="_blank" name="INTO_TABLE"><span style="FONT-SIZE: 100%">INTO TABLE</span></a></td><td colspan="2"><span style="FONT-SIZE: 100%">데이터를 넣는 테이블</span></td><td><span style="FONT-SIZE: 100%">　</span></td></tr><tr><td noWrap><span style="FONT-SIZE: 100%">WHEN</span></td><td colspan="2"><span style="FONT-SIZE: 100%">데이터를 넣는</span><a class="con_link" target="_blank" name="WHEN"><span style="FONT-SIZE: 100%">조건</span></a><span style="FONT-SIZE: 100%">. SQL의WHERE구와 같은 쓰는 법. <br>이 조건에 의해 폐기된 데이터는 ,</span><a class="con_link" href="http://j2k.naver.com/j2k_frame.php/korean/www.ne.jp/asahi/hishidama/home/tech/oracle/sqlldr.html#DISCARDFILE" target="_blank"><u><span style="FONT-SIZE: 100%; COLOR: #800080">폐기 파일</span></u></a><span style="FONT-SIZE: 100%">에 출력된다. <span class="chg">[2005.3.18]</span></span></td><td><span style="FONT-SIZE: 100%">예：「WHEN 렬명=치」 「WHEN (렬명&gt;=치) AND (렬명&lt;=치)」</span></td></tr><tr><td rowspan="3"><span style="FONT-SIZE: 100%">FIELDS</span></td><td colspan="2"><span style="FONT-SIZE: 100%">항목의</span><a class="con_link" target="_blank" name="FIELDS"><span style="FONT-SIZE: 100%">단락짓는 방법</span></a><span style="FONT-SIZE: 100%">의 지정. </span></td><td><span style="FONT-SIZE: 100%">　</span></td></tr><tr><td><span style="FONT-SIZE: 100%">TERMINATED BY</span></td><td><span style="FONT-SIZE: 100%">데이터를 단락짓는 문자를 지정. </span></td><td><span style="FONT-SIZE: 100%">칸마 단락의 경우는 「TERMINATED BY ","」<br>탭 단락으로 하고 싶은 경우는 「TERMINATED BY X'09'」<br><span style="COLOR: #330099; FONT-FAMILY: Arial">Fixed-Format Fields(</span>position으로 찾아갈수 있는파일의 경우는 불필요)</span></td></tr><tr><td><span style="FONT-SIZE: 100%">OPTIONALLY ENCLOSED BY</span></td><td><span style="FONT-SIZE: 100%">데이터를 둘러싸는 문자를 지정. 둘러싸지 않는 경우는 불요. </span></td><td><span style="FONT-SIZE: 100%">더블 쿼테이션으로 둘러싸는 경우는 「OPTIONALLY ENCLOSED BY '"'」</span></td></tr><tr><td><a class="con_link" target="_blank" name="TRAILING_NULLCOLS"><span style="FONT-SIZE: 100%">TRAILING NULLCOLS</span></a></td><td colspan="2"><span style="FONT-SIZE: 100%">이 지정이 있으면(자) , 데이터가 없는 항목에NULL를 넣는다. </span></td><td><span style="FONT-SIZE: 100%">　</span></td></tr></tbody></table></p><p>컨트롤 파일 중(안)에서 , 「--」으로 시작되어 있는 행은 코멘트 취급이 된다. </p><hr size="0"><p>각 항목의 뒤에는 ,<a class="con_link" target="_blank" name="함수">함수</a>를 써 연산을 할 수도 있다. </p><pre> MGR, HIREDATE <span class="aqu">"TO_DATE(:HIREDATE,'YYYY/MM/DD HH24:MI:SS')"</span>, SAL,</pre><p>이 때 , 함수의 인수에 쓰는 항목명은<span class="red">「:(코론)」를 붙이는 일</span>. 이것을 잊으면(자)<a class="con_link" href="http://j2k.naver.com/j2k_frame.php/korean/www.ne.jp/asahi/hishidama/home/tech/oracle/error.html#ORA-00984" target="_blank"><u><span style="COLOR: #0000ff">ORA-00984</span></u></a>에 고민하게 된다. </p><hr size="0"><p>그리고 , 항목마다 파일내의 데이터의<a class="con_link" href="http://j2k.naver.com/j2k_frame.php/korean/www.ne.jp/asahi/hishidama/home/soft/oracsv/fixin.html#emp_fix_in.ctl" target="_blank"><u><span style="COLOR: #0000ff">속성을 지정</span></u></a>할 수도 있다. 이것은 특히 <span style="FONT-SIZE: 100%">position으로 찾아갈수 있는파일</span>의 경우에 중요. </p><p><table border="1"><tbody><tr><th><span style="FONT-SIZE: 100%">속성</span></th><th><span style="FONT-SIZE: 100%">설명</span></th><th><span style="FONT-SIZE: 100%">DB의 속성</span></th><th><span style="FONT-SIZE: 100%">지정예</span></th><th><span style="FONT-SIZE: 100%">데이터예</span></th><th><span style="FONT-SIZE: 100%">DB에 들어가는 것</span></th></tr><tr><td><a class="con_link" target="_blank" name="CHAR"><span style="FONT-SIZE: 100%">CHAR</span></a></td><td><span style="FONT-SIZE: 100%">캐릭터 라인</span></td><td><span style="FONT-SIZE: 100%">char,varchar2</span></td><td><span style="FONT-SIZE: 100%">CHAR</span></td><td><span style="FONT-SIZE: 100%">hoge</span></td><td><span style="FONT-SIZE: 100%">hoge</span></td></tr><tr><td><a class="con_link" target="_blank" name="DECIMAL_EXTERNAL"><span style="FONT-SIZE: 100%">DECIMAL EXTERNAL</span></a></td><td><span style="FONT-SIZE: 100%">수치</span></td><td><span style="FONT-SIZE: 100%">number</span></td><td><span style="FONT-SIZE: 100%">DECIMAL EXTERNAL</span></td><td><span style="FONT-SIZE: 100%">123</span></td><td><span style="FONT-SIZE: 100%">123</span></td></tr><tr><td><a class="con_link" target="_blank" name="ZONED"><span style="FONT-SIZE: 100%">ZONED</span></a></td><td><span style="FONT-SIZE: 100%">수치(소수 취급)</span></td><td><span style="FONT-SIZE: 100%">number</span></td><td><span style="FONT-SIZE: 100%">ZONED(7,2)</span></td><td><span style="FONT-SIZE: 100%">1234567</span></td><td><span style="FONT-SIZE: 100%">12345<b>.</b>67</span></td></tr><tr><td><a class="con_link" target="_blank" name="DATE"><span style="FONT-SIZE: 100%">DATE</span></a></td><td><span style="FONT-SIZE: 100%">일자. 서식을 뒤로 붙이는</span></td><td><span style="FONT-SIZE: 100%">date</span></td><td><span style="FONT-SIZE: 100%">DATE "YYYYMMDD"</span></td><td><span style="FONT-SIZE: 100%">20041030</span></td><td><span style="FONT-SIZE: 100%">2004-10-30</span></td></tr><tr><td><a class="con_link" target="_blank" name="CONSTANT"><span style="FONT-SIZE: 100%">CONSTANT</span></a></td><td><span style="FONT-SIZE: 100%">정수(파일내의 데이터를 사용하지 않는다 )</span></td><td><span style="FONT-SIZE: 100%">뭐든지</span></td><td><span style="FONT-SIZE: 100%">CONSTANT 100</span></td><td><span style="FONT-SIZE: 100%">　</span></td><td><span style="FONT-SIZE: 100%">100</span></td></tr></tbody></table></p><p>공백만의 항목은 역시 공문자열로서 다루어져null는 되지 않는다. null(을)를 넣고 싶은 경우는<a class="con_link" target="_blank" name="decode">이하와 같은 궁리</a>가 필요. </p><pre> SAL POSITION( 36 : 42 ) ZONED(7,2), <br> <span class="aqu">COMM</span> POSITION( 43 : 49 ) CHAR <span class="ora">"decode(</span><span class="aqu">:COMM</span><span class="ora">,'',null,to_number(</span><span class="aqu">:COMM</span><span class="ora">))"</span>,<br> DEPTNO POSITION( 50 : 51 ) DECIMAL EXTERNAL </pre><hr><h3><a class="con_link" target="_blank" name="데이터 파일">데이터 파일</a></h3><p><span style="FONT-SIZE: 100%"><span style="COLOR: #330099; FONT-FAMILY: Arial">Fixed-Format Fields(</span>position으로 찾아갈수 있는파일)</span>도 가능하지만 , 잘 사용되는 것은<a class="con_link" href="http://j2k.naver.com/j2k_frame.php/korean/www.ne.jp/asahi/hishidama/home/soft/oracsv/index.html#emp.csv" target="_blank"><u><span style="COLOR: #0000ff">CSV형식의 파일</span></u></a>이라고 생각한다. <br>데이터 파일의 이름은 ,<a class="con_link" href="http://j2k.naver.com/j2k_frame.php/korean/www.ne.jp/asahi/hishidama/home/tech/oracle/sqlldr.html#INFILE" target="_blank"><u><span style="COLOR: #800080">컨트롤 파일내</span></u></a>에 기술한다. </p><p><a class="con_link" href="http://j2k.naver.com/j2k_frame.php/korean/www.ne.jp/asahi/hishidama/home/tech/oracle/sqlldr.html#컨트롤 파일" target="_blank"><u><span style="COLOR: #800080">컨트롤 파일</span></u></a>로 지정한 항목수부터CSV파일측의 항목수가 많은 경우는 , 무시되는 것만으로 문제 없다. </p><p>Windows의 텍스트 파일의 경우 , 파일의 마지막에EOF의 코드가 붙어 있는 경우가 있다. <br>이 행은 (속성이 불일치이면 ) 에러가 되어 , 로드 되지 않는다. (<a class="con_link" href="http://j2k.naver.com/j2k_frame.php/korean/www.ne.jp/asahi/hishidama/home/tech/oracle/sqlldr.html#BADFILE" target="_blank"><u><span style="COLOR: #800080">bad파일</span></u></a>에 출력된다 )</p><p><br>참고: </p><p><a class="con_link" href="http://intranet.warevalley.com/manual/Oracle816OnlineManual/server.816/a76955/ch04.htm" target="_blank">http://intranet.warevalley.com/manual/Oracle816OnlineManual/server.816/a76955/ch04.htm</a></p><p><br>&nbsp;프로젝트를 하다보면 파일을 읽어서 인서트하는 작업이&nbsp;수초에 끝나지 않고 작업중이라는 메세지를 모달창으로 계속해서 보여주면서 사용자가 그 작업이 끝날동안 대기를 해야할 경우도 있다..</p><p>이럴때 파일을 읽어서 인서트하는 작업을 하는 클래스를 메인메소드를 가지고 있는 클래스로 만들어서 이 클래스를 runtime.exec(" java 해당 클래스명 .. ")으로 실행시키고 상태를 등록중으로 바꿔주고 해당 메소드를 빠져나가게 해놓으면 사용자는 다른 작업을 계속 할 수있을 것이다. 파일등록작업은 백그라운드로 실행이 되고 있다. 작업이 완료되면 디비 상태를 완료로 바꿔준다. </p><p>&nbsp;</p><p>&nbsp;&nbsp;&nbsp;javaCmd.append(" java SqlLoader "); //sqlLoader클래스&nbsp;실행명령문<br>&nbsp;&nbsp; ..</p><p>&nbsp;&nbsp;&nbsp;sql.append(" insert into ").append( tableNm ); //디비상태를 등록<br>&nbsp;&nbsp;&nbsp;..&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><br>&nbsp;&nbsp;&nbsp;Properties prop = new Properties();</p><p>&nbsp;&nbsp; //팩키지의 상위 폴더를 가지고 있는 정보 NoDefClass.. Exception이 안나게 하기 위해<br>&nbsp;&nbsp;&nbsp;prop.load( new FileInputStream( propFile ) );&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;Runtime rt = Runtime.getRuntime();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p><p>&nbsp;&nbsp; //백그라운드로 java명령을 properties파일에 등록된&nbsp;ClassHome위치에서 실행<br>&nbsp;&nbsp;&nbsp;Process ps = rt.exec( javaCmd.toString(), null, new File(prop.getProperty("ClassHome")) );</p><p>&nbsp;</p><p>첨부파일은 SQLLoader를 클래스로 만들어 control파일을 동적으로 만들어서&nbsp;사용할수 있도록 했다.</p><p>&nbsp;</p><div class="autosourcing-stub"><p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-WEIGHT: normal; FONT-SIZE: 12px; PADDING-BOTTOM: 0px; MARGIN: 11px 0px 7px; PADDING-TOP: 0px; FONT-STYLE: normal; FONT-FAMILY: Dotum">&nbsp;</p></div>			 ]]> 
		</description>
		<category>ORACLE</category>

		<comments>http://devideby0.egloos.com/2230995#comments</comments>
		<pubDate>Wed, 11 Feb 2009 05:18:57 GMT</pubDate>
		<dc:creator>overdose</dc:creator>
	</item>
	<item>
		<title><![CDATA[ Linux - 다른 문자셋의 데이터 mysql로 벌크로드. ]]> </title>
		<link>http://devideby0.egloos.com/2225937</link>
		<guid>http://devideby0.egloos.com/2225937</guid>
		<description>
			<![CDATA[ 
  1. 원본 캐릭터셋을 유지한 채로 입력<br><br>LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name'<br>&nbsp;&nbsp;&nbsp; [REPLACE | IGNORE]<br>&nbsp;&nbsp;&nbsp; INTO TABLE tbl_name<br>&nbsp;&nbsp;&nbsp; [CHARACTER SET charset_name]<br>&nbsp;&nbsp;&nbsp; [FIELDS<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [TERMINATED BY 'string']<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [[OPTIONALLY] ENCLOSED BY 'char']<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [ESCAPED BY 'char']<br>&nbsp;&nbsp;&nbsp; ]<br>&nbsp;&nbsp;&nbsp; [LINES<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [STARTING BY 'string']<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [TERMINATED BY 'string']<br>&nbsp;&nbsp;&nbsp; ]<br>&nbsp;&nbsp;&nbsp; [IGNORE number LINES]<br>&nbsp;&nbsp;&nbsp; [(col_name_or_user_var,...)]<br>&nbsp;&nbsp;&nbsp; [SET col_name = expr,...]<br><br>CHRACTER SET 항목에 에 원본 파일의 문자셋을 입력하면 가능하다.<br>문자를 mysql 서버의 문자셋으로 바꿔서 입력해주는것이 아니고, 원본 문자셋을 그대로 집어넣는다.<br>물론 조회시에 원본 문자셋으로 읽어들여야 한다. set names 원본문자셋<br><br>2.&nbsp;iconv 를&nbsp;써서 원본 파일의 문자셋을 바꾸는&nbsp;방법<br><br># iconv -f 원본문자셋 -t mysql서버문자셋 원본파일 &gt; 대상파일<br>&nbsp; ex) iconv -f CP949 -t utf8 testsrc.csv &gt; testdst.csv<br><br>어느쪽이든, 원본 파일의 문자셋을 정확하게 파악하는게 중요하다.<br>원본 문자셋을 euckr로 설정하고 utf8로 변환하다 중간에 오류가 나서 곤란했었는데,<br>알고보니 정확한 문자셋이 CP949 였으며, '닭벼슯'의 '슯'이라는 글자를 변환하지 못하는 것이 원인이었다.<br>CP949는 euckr 내용에 지원하지 않는 한글을 더욱 추가한 것이다.(코드에 연속성이 없다.)<br>일반적인 한글이라면 euckr-&gt;utf8이 정상적으로 동작하지만 '슯' 같이 euckr에서 지원하지 않는 코드번호가 나왔을 때 iconv는 동작을 멈춰버린다.<br><br>보너스: <a href="http://pds11.egloos.com/pds/200902/06/95/all_cp949_code_table.txt">all_cp949_code_table.txt</a>			 ]]> 
		</description>
		<category>LINUX</category>

		<comments>http://devideby0.egloos.com/2225937#comments</comments>
		<pubDate>Fri, 06 Feb 2009 04:41:01 GMT</pubDate>
		<dc:creator>overdose</dc:creator>
	</item>
	<item>
		<title><![CDATA[ 씨게이트 펌웨어 업데이트 복구 ]]> </title>
		<link>http://devideby0.egloos.com/2215642</link>
		<guid>http://devideby0.egloos.com/2215642</guid>
		<description>
			<![CDATA[ 
  <p>최근 씨게이트 제품군(7200.11)의 펌웨어 업데이트가 있었다.<br><br>내 하드 중에서는 3개가 이에 해당됐는데, 그 중 하나가 업데이트 도중 데이터에 접근이 불가능한 증상을 보였다.<br><br>결론만 말하자면 이는 파티션 데이터가 날아간 것으로, 파티션 복구 프로그램으로 간단하게 되살릴 수 있었다.<br><br>펌웨어 업데이트 이전의 오류도 이와 같은 증상이 아닐까 생각한다.<br><br>파티션 복구에 사용된 프로그램은 testdisk 라는 프리 소프트웨어다.<br><br>특별히 인스톨 할 필요가 없지만, 홈페이지에서 자신의 OS에 해당하는 버전을 받아 사용해야 한다.<br><br><a href="http://www.cgsecurity.org/wiki/TestDisk">http://www.cgsecurity.org/wiki/TestDisk</a><br><br>사용법은 쉽다.<br><br>압축 해제 경로\testdisk-6.10\win\testdisk_win.exe 를 실행한다.<br><br>콘솔창에서 실행되는데, <br><br>처음 메뉴는 로그를 남길것인지다. <br><br>파티션 복구에 실패했을 경우 로그를 보고 해결할 수 있다고 스스로 생각한다면 1번이나 2번을 선택하자.<br><br>나라면 3번을 택하겠다.<br><br>다음으로, 파티션이 날아간 디스크를 선택한다.<br><br>세번째 나오는 메뉴에서 자신의 파일 시스템을 선택한다.<br><br>윈도우라면 인텔을 선택하면 된다. <br><br>다음 메뉴에서 Analyse 를 선택한다.<br><br>이후의 메뉴는 대충 서치로 찾거나 파티션을 선택하거나 그러면 된다.<br><br>나는 파티션이 하나 뿐이라 쉬웠다. 그래서 복잡하게 쓰고 싶지 않다.<br><br>Write 메뉴를 선택하면 선택한 파티션 정보를 기록한다. 주의하자. <br><br>모든 작업을 완료한 뒤에는 재부팅을 하면 된다.<br></p>			 ]]> 
		</description>

		<comments>http://devideby0.egloos.com/2215642#comments</comments>
		<pubDate>Tue, 27 Jan 2009 09:50:50 GMT</pubDate>
		<dc:creator>overdose</dc:creator>
	</item>
</channel>
</rss>
