728x90

프로시저나 펑션을 만들다 보면 여러 소스코드 파일을 검색하듯이 여러 프로시저나 펑션의 내용을 검색하고자 할 경우가 있습니다.

 

결론부터 말하자면 USER_SOURCE 를 이용하면 됩니다.

 

SELECT NAME 
FROM   USER_SOURCE
WHERE  TYPE = 'PROCEDURE'

GORUP BY NAME  

ORDER BY NAME ASC;

 

 

(TYPE = 'FUNCTION" 으로 하면 펑션에서 검색하게 됩니다.)

 

아래는 USER_SOURCE뷰의 스크립트입니다. (Oracle8i 기준입니다.)

 

CREATE OR REPLACE VIEW USER_SOURCE

(NAME, TYPE, LINE, TEXT)
AS
select o.name,
decode(o.type#, 7, 'PROCEDURE', 8, 'FUNCTION', 9, 'PACKAGE',
               11, 'PACKAGE BODY', 13, 'TYPE', 14, 'TYPE BODY',
               'UNDEFINED'),
s.line, s.source
from sys.obj$ o, sys.source$ s
where o.obj# = s.obj#
  and o.type# in (7, 8, 9, 11, 13, 14)
  and o.owner# = userenv('SCHEMAID')
union
select o.name, 'JAVA SOURCE', s.joxftlno, s.joxftsrc
from sys.obj$ o, x$joxfs s
where o.obj# = s.joxftobn
  and o.type# = 28
  and o.owner# = userenv('SCHEMAID')
/

 

 

728x90

'프로그래밍 > Oracle' 카테고리의 다른 글

오라클 테이블 정보 보기  (0) 2015.04.23
SQLPLUS 출력 컬럼 수 조정하기  (0) 2014.07.31
오라클 날짜 함수  (0) 2014.01.13
SQL LOADER 사용 기초  (0) 2013.10.01
ORA-01476 : 제수가 0 입니다.  (0) 2012.05.14
728x90

오늘은 안중근 의사의 순국일입니다.
아래는 사형선고 받은 아들 안중근 의사에게 쓴
조마리아 여사 편지 전문입니다.


네가 만약 늙은 어미보다 먼저 죽은 것을 불효라 생각한다면,
이 어미는 웃음거리가 될 것이다.

너의 죽음은 너 한 사람 것이 아니라
조선인 전체의 공분을 짊어지고 있는 것이다.

네가 항소를 한다면 그것은 일제에 목숨을 구걸하는 짓이다.
네가 나라를 위해 이에 이른즉 딴 맘 먹지 말고 죽으라.

옳은 일을 하고 받은 형이니 비겁하게 삶을 구하지 말고,
대의에 죽는 것이 어미에 대한 효도이다.

아마도 이 편지가 이 어미가 너에게 쓰는 마지막 편지가 될 것이다.
여기에 너의 수의(壽衣)를 지어 보내니 이 옷을 입고 가거라.

어미는 현세에서 너와 재회하기를 기대치 않으니,
다음 세상에는 반드시 선량한 천부의 아들이 되어 이 세상에 나오너라.

728x90

'향기나는글' 카테고리의 다른 글

아내를 위해 혼수상태에서 깨어난 남편  (0) 2015.04.16
행복 찾는 법  (1) 2014.07.31
카이로스  (0) 2013.08.06
1만달러의 힘  (0) 2013.07.30
회장의 유서  (0) 2013.07.19
728x90

 Path Manipulation  

취약점) 예상가능한 경로 노출로 인해 시스템 의 중요파일에 접근해 공격가능  

대응방안) 인가된 경로 외에 파일에 접근하지 못하도록 소스 변경해야함

 SQL Injection

취약점) DB를 공격해서 정보 조작및 유출 가능  

대응방안) 사용자 입력값이 쿼리문에 직접 조합되지 않도록 preparedStatement사용할것

 XSS

취약점) 페이지 우회, 바이러스 설치 등 스크립트 공격가능

대응방안) 사용자 입력값에 대해 유효문자가 아닌 문자등을 필터링 해주어야 함 

 HTTP Response Splitting

취약점) 페이지 우회, 바이러스 설치 등 스크립트 공격가능. 헤더 세팅시 본문 침해할 가능성 있음

대응방안) 사용자 입력값에 대해 유효문자가 아닌 문자등을 필터링 해주어야 함 

 Trust Boundary Violation

취약점) 프로그램 내부 데이터 조작 공격 가능

대응방안) 내부데이터의 외부 사용자 입력값이 사용되지 않도록 소스 수정해야함

 Unchecked Return Value: Missing Check against Null  

취약점) 시스템 간접정보 획득 및 프로그램 오작동 가능  

대응방안) 사용자 입력값 필터링해주어야 함 

 J2EE Misconfiguration: Missing Error Handling

취약점) 시스템 간접정보 획득 가능  

대응방안) Error발생시 시스템 정보가 노출되지 않도록 설정 파일 변경해야 함



728x90
728x90

SQL 오라클 내장함수(변환형 함수, 날짜 함수, 숫자형 함수)

숫자형 함수

ROUND : 숫자를 반올림

ROUND(숫자값,a) a가 양수이면 소수이하자리를, 음수이면 정수 부분 자리이다.

ROUND(35.735,2) -> 35.74

TRUNC : 숫자를 절사

TRUNC(숫자값,a)

MOD : 나누기 연산에서 나머지 구함

MOD(7,2) -> 1

POWER : 거듭제곱

POWER(3,2) -> 9

SQRT : 제곱근

SQRT(25) -> 5

SIGN : 양수인지 음수인지 0인지를 구별함

SIGN(-15) -> -1

CHR : ASCII값에 해당하는 문자를 구함

CHR(65) -> A

 

날짜형 함수

SYSDATE : 현재 시스템의 날짜 및 시간을 구함

SYSDATE -> 현재 시간 10-MAY-99

LAST_DAY : 지정한 날짜의 해당월의 마지막 날짜를 구함

LAST_DAY('17-FEB-98') -> 28-FEB-98

MONTHS_BETWEEN : 두 날짜사이의 개월수를 구함

MONTHS_BETWEEN('26-APR-97','22-JUL-95') -> 21.1290323

ADD_MONTHS : 지정한 날짜로부터 몇 개월수의 날짜를 구함

ADD_MONTHS('22-JUL-95',21) -> 22-APR-97

ROUND : 날짜에 대한 반올림

ROUND('10-MAY-99','MONTH') -> 01-MAY-99

TRUNC : 날짜에 대한 버림

 TRUNC('10-MAY-99','MONTH') -> 01-MAY-99

변환형 함수

TO_CHAR : 숫자나 날짜를 문자열로 변환

TO_CHAR(350000,'$999,999') -> $350,000

TO_NUMBER : 문자를 숫자로 변환

TO_NUMBER('1234') -> 1234

TO_DATE : 문자를 날짜로 변환

TO_DATE('10 SEPTEMBER 1992','DD MONTH YYYY') -> 10-SEP-92


728x90
728x90
select text값 가져오기

$("#select_box option:selected").text();


jQuery로 선택된 값 읽기
$("#myselect option:selected").val();
$("select[name=name]").val();


jQuery로 선택된 내용 읽기
$("#myselect option:selected").text();


선택된 위치
var index = $("#test option").index($("#test option:selected"));


// Add options to the end of a select
$("#myselect").append("<option value='1'>Apples</option>");
$("#myselect").append("<option value='2'>After Apples</option>");

 
// Add options to the start of a select
$("#myselect").prepend("<option value='0'>Before Apples</option>");
 

// Replace all the options with new options
$("#myselect").html("<option value='1'>Some oranges</option><option value='2'>More Oranges</option><option value='3'>Even more oranges</option>");
 

// Replace items at a certain index
$("#myselect option:eq(1)").replaceWith("<option value='2'>Some apples</option>");
$("#myselect option:eq(2)").replaceWith("<option value='3'>Some bananas</option>");
 

// 지정된 index 값으로 select 하기
$("#myselect option:eq(2)").attr("selected", "selected");
 

// text 값으로 select 하기
$("#myselect").val("Some oranges").attr("selected", "selected");
 

// value 값으로 select 하기
$("#myselect").val("2");
 

// 지정된 인덱스 값의 item 삭제
$("#myselect option:eq(0)").remove();
 

// 첫번째 item 삭제
$("#myselect option:first").remove();
 

// 마지막 item 삭제
$("#myselect option:last").remove();
 
 
// 선택된 옵션의 text 구하기
alert($("#myselect option:selected").text());
 

// 선택된 옵션의 value 구하기
alert($("#myselect option:selected").val());
 

// 선택된 옵션 index 구하기
alert($("#myselect option").index($("#myselect option:selected")));
 

// SelecBox 아이템 갯수 구하기
alert($("#myselect option").size());
 

// 선택된 옵션 앞의 아이템 갯수
alert($("#myselect option:selected").prevAll().size());
 

// 선택된 옵션 후의 아이템 갯수
alert($("#myselect option:selected").nextAll().size());
 

// Insert an item in after a particular position
$("#myselect option:eq(0)").after("<option value='4'>Some pears</option>");
 

// Insert an item in before a particular position
$("#myselect option:eq(3)").before("<option value='5'>Some apricots</option>");
 

// Getting values when item is selected
$("#myselect").change(function() {
alert($(this).val());
alert($(this).children("option:selected").text());
});



radio button 관련

radio button 값 가져오기

.........

<input type="radio" name="radio" id="radio" value="ta">
<input type="radio" name="radio" id="radio" value="do">
<input type="radio" name="radio" id="radio" value="ch">
.........

jQuery("input:radio[name=radio]:checked").val();
 
.........

checkbox 관련

checkbox:<input type="checkbox" name="chk" id="chk" value="000000000" />

checkall:<input type="checkbox" name="checkall" id="checkall">

check box 모두 체크/해제 하기
jQuery(function(){
  $("input[name=checkall]:checkbox").click(function(){
    if($("input[name=checkall]:checkbox").is(":checked")){
    $("input[name=chk]:checkbox").attr("checked","checked");
    }else{
    $("input[name=chk]:checkbox").removeAttr("checked");
    }
  })
});

check box 체크된 값 가져오기
var  v = '';
var  c = 0;
for (var i = 0; i < $("input[name=chk]:checkbox").length; i++) {
  if ($("input[name=chk]:checkbox")[i].checked == true) {
    if(c>0) v = v + "|";
    v = v + $("input[name=chk]:checkbox")[i].value;
    c++;
  }


728x90

'프로그래밍 > 자바스크립트' 카테고리의 다른 글

jQuery selectBox 제어  (0) 2016.04.14
jQuery 자식 팝업 창에서 부모 창 컨트롤  (0) 2016.03.17
정규 표현식 요약  (0) 2013.10.02
quick menu 바  (0) 2013.07.19
javascript 브라우저 종류  (0) 2012.11.23
728x90

Regular Expressions in Java


java.util.regex package 에 있는 Matcher 클래스와 Pattern 클래스를 사용하여 문자열을 정규표현식으로 검증할수 있다.

     

http://www.javamex.com/tutorials/regular_expressions/pattern_matcher.shtml#.UfdJmo1M-X8


e.g. )  boolean b = Pattern.matches(“^[a-zA-Z0-9]*$”, this.input);

 

A.     정규표현식 설명


^ : 문자열의 시작을 나타냄. 

$ : 문자열의 종료를 나타냄. 

. : 임의의 한 문자를 나타냄. (문자의 종류는 가리지 않는다)

| : or를 나타냄. 

? : 앞 문자가 없거나 하나있음을 나타냄. 

+ : 앞 문자가 하나 이상임을 나타냄. 

* : 앞 문자가 없을 수도 무한정 많을 수도 있음을 나타냄. 

[] : 문자 클래스를 지정할 때 사용한다. 문자의 집합이나 범위를 나타내며 두 문자 사이는 '-' 기호로 범위를 나타낸다. []내에서 ^ 가 선행하여 나타나면 not 를 나타낸다. 

{} : 선행문자가 나타나는 횟수 또는 범위를 나타낸다. 

a{3} 인 경우 a가 3번 반복된 경우를 말하며, a{3,}이면 a가 3번 이상 반복인 경우를 말한다. 또한 a{3,5}인 경우 

a가 3번 이상 5번 이하 반복된 경우를 나타낸다. 

( ): 소괄호 ‘( )’ 특수문자는 ‘( )’ 특수문자 안의 글자들을 하나의 문자로 봅니다. 예를 들어 ‘gu(gg){2}le’ 와 같은 패턴을 작성하게 되면 ‘guggggle' 문자열이 문자열에 포함되어 있어야 됩니다.

|: 패턴 안에서 OR연산을 사용할 때 사용합니다. 예를 들어 'hi|hello' 는 hi 나 hello 가 포함되어있는 문자열을 의미합니다.

\w : 알파벳이나 숫자

\W : 알파벳이나 숫자를 제외한 문자

\d : 숫자 [0-9]와 동일

\D : 숫자를 제외한 모든 문자

\: 위의 각 기능에서 벗어납니다(escape).

(?i): 앞 부분에 (?i) 라는 옵션을 넣어주면 대소문자를 구분하지 않는다 (물음표+소문자i(아이))


B.     기본적인 문자열 검증 정규식


^[0-9]*$  :  숫자만

^[a-zA-Z]*$  :  영문자만

^[가-힣]*$  :  한글만

^[a-zA-Z0-9]*$  :  영어/숫자만

.+ : 한문자 이상의 전체문자를 표시한다.

C. 정규식 표현 예제


이메일 : ^[a-zA-Z0-9]+@[a-zA-Z0-9]+$  or  ^[_0-9a-zA-Z-]+@[0-9a-zA-Z-]+(.[_0-9a-zA-Z-]+)*$ 

휴대폰 :  ^01(?:01[6-9]) - (?:\d{3}\d{4}) - \d{4}$ 

일반전화 : ^\d{2,3} - \d{3,4} - \d{4}$

주민등록번호 : \d{6} \- [1-4]\d{6}

IP 주소 : ([0-9]{1,3}) \. ([0-9]{1,3}) \. ([0-9]{1,3}) \. ([0-9]{1,3})

파일확장자: ([^\s]+(\.(?i)(jpg|png|gif|bmp))$)



1. 자바스크립트 정규표현식은 RegExp 객체로 표현됨.

2. RegExp 객체 생성방법

    1) RegExp() 생성자 사용

    2) 한쌍의 슬래시(/) 안에 리터럴을 기술

           --> var pattern = /s$/;        

           --> var pattern = new RegExp("s$");

                              : 's' 로 끝나는 문자열에 매칭됨


3. 정규표현식 리터럴 문자

    1) \0 : 널문자

    2) \t  : 탭

    3) \n : 줄바꿈

    4) \v : 수직탭

    5) \f  : 폼피드

    6) \r  : 캐리지리턴


4. 문자클래스 ( 대괄호로 둘러싼 개별 리터럴 문자 --> 대괄호내에 정의된 모든 문자에 매치됨)

    1) /[abc]/   : a,b,c 모두 매칭

    2) /[^abc]/  : a,,b,c 가 아닌 모든 문자에 매치

    3) /[a-z]/    : 임의의 알파벳 소문자에 매치

    4) /[a-zA-Z0-9]/   : 임의의 알파벳 대소문자 및 숫자에 매치

    5) 특수문자

          a) \s : Unicode 공백문자

          b) \S : Unicode 공백문자가 아닌 문자

          c) \w : ASCII 문자([a-zA-Z0-9]) 와 동일

          d) \W : ASCII 문자가 아닌 문자 ([^a-zA-Z0-9]) 와 동일

          e) \d  : ASCII 숫자([0-9]) 와 동일

          f) \D : ASCII 숫자가 아닌 문자([^0-9]) 와 동일

          g) \b : 백스페이스


               ==> /[\b]/    백스페이스에 매치됨.


               ==> /[\s\d]/  공백문자나 숫자 하나에 매치


5. 정규표현식 반복 문자 

      1) {n,m} n번이상 m번 보다 이하

      2) {n,}   n번이상

      3) {n}    딱 n번

      4) ?        0또는 한번 나타남  ({0,1}과 동일)          

      5) +        한번이상      ({1,}과 동일)

      6) *        0번이상       ({0,} 과 동일)


           ==> /\d{2,4}/    : 2에서 4자리 사이의 숫자와 매치


           ==> /\w{3}\d?/    : 정확히 3 문자와 매치 돠고 생략 가능한 숫자가 하나 있다.


           ==> /\s+java\s+/  : 앞뒤에 하나 이상의 공백이 있는 java 와 매치


           ==> /[^"]*/            : 0개 이상의 따옴표가 아닌 문자와 매치


6. 대체표현식 (|문자)  ==>  왼쪽에서 오른쪽으로 검색됨 (먼저 매치되면 뒤의 것은 매칭 안됨)

                    /ab|cd|ef/          : ab 문자열 또는 cd문자열 또는 ef문자열 매치

                    /d{3}|[a-z]{4}/  : 세자리 숫자나 네개의 소문자에 매치 

                    /a|ab/                : "ab" 에 적용되면 첫번째 표현식에만 매칭됨.


7. 그룹화 (소괄호)  : 

# 정규표현식 플래그

   i    : 대소문자 구별하지 않음

   g   : 전역매칭 수행 , 첫번째 매치에서 끝내지 않고 매치되는 모든 것을 찾는다.

   m  : 여러줄 상태


# 정규표현식 패턴 매칭을 위한 String 메서드

(1) search()  : - 정규표현식을 파라미터로 받아 가장 처음 매칭되는 부분 문자열의 위치를 리턴, 

                    - 파라미터가 정규표현식이 아니라면 RegExp()생성자로 정규표현식으로 변환된다. 

                     - 매칭되는 부분 문자열이 없다면 -1 리턴 

                     - 전역기능 지원안함. g플래그가 있다면 무시 


               "javaScript".search(/script/i);               ==>  4리턴


(2) replace() : - 찾아서 바꾸기 작업 수행

                      - 첫번째 파라미터 : 정규표현식 , 두번째 파라미터 :바꿀 문자열(두번째파라미터 함수가능,동적문자열가능)

                      - g플래그가 있으면 모두다 바꾸고, 없으면 첫번째 매치만 바꿈

                      - 첫번째 파라미터가 정규표현식이 아니면 주어진 문자열을 그대로 검색한다.

                      - 

                 text.replace(/javascript/gi,"JavaScript");           ==> 문자열의 대문자가 어떤상태던지 JavaScript로 변환한다.


(3) match()

728x90

'프로그래밍 > 자바스크립트' 카테고리의 다른 글

jQuery 자식 팝업 창에서 부모 창 컨트롤  (0) 2016.03.17
jquery radio, select, checkbox  (0) 2013.10.28
quick menu 바  (0) 2013.07.19
javascript 브라우저 종류  (0) 2012.11.23
자주 쓰이는 JQuery Ajax 예제  (0) 2011.08.02
728x90


SQL*Loader 사용하기

오라클/SQL/SQL공부
 


1. SQL*Loader란 ?
외부 화일에 있는 데이터를 Oracle에 Upload 할 수 있는 유틸리티 입니다.
기본적으로 외부 데이타 화일, 콘트롤화일(로드하는 데이타의 정보를 저장)이 필요합니다.

 

 

2. SQL*Loader 특징
  - 하나 이상의 입력 파일을 사용 가능
  - 로드를 위해 여러 개의 입력 레코드가 하나의 논리적 레코드로 결합될 수 있습니다..
  - 입력 필드는 고정 길이 또는 다양한 길이를 가질 수 있습니다.
  - 입력 데이터는  등   어떤 유형도 가능 합니다.
  - 데이터는 디스크/테이프/명명된 파이프 등 여러 유형의 매체로부터 로드 가능  
  - 데이터가 한 번에 여러 테이블로 로드 가능
  - 텍스트 데이터는 DB 버퍼 캐쉬를 거치지 않고 테이블로 직접 로드될 수 있다.
  - 테이블에 있는 기존 데이터를 대체 하거나(Replace) 추가(Append) 할 수 있는 기능이 있습니다.

 

 

3. SQL*Loader의 사용

 

 


기본문법 :    SQLLDR [keyword=] value  [ [keyword=] value ]...

 

 

     - KEYWORD : 아래에 설명되는 키워드중의 하나이며 VALUE는  키워드에 지정되는  값
  

실행예)

SQLLDR userid=scott/tiger control='test.ctl' log='test.log' 

 

 

 

 


키워드

•USERID :  사용자 ID와 암호
•CONTROL : 콘트롤 파일명
•LOG : 로그 파일명(기본 이름은 컨트롤파일명.log)
•BAD : 업로드에 실패한 레코드들이 저장 된다.(기본 이름은 컨트롤파일명.bad)
•DATA :  업로드를 위한 데이터 파일 이름 
•DISCARD : 선택되지 않은 레코드가 저장되는 디스카드 파일(선택 사항)
•DISCARDMAX :  버림(discard)의 최대 허용 갯수(기본값은 모든 버림을 허용하는 것입니다. 잘못된 입력 파일이 지정될 경우 실행을 중단시킬 안전 수단으로 사용) 
•SKIP : 건너 뛸 레코드 수, 주로 이전에 실패한 로드를 계속할 때 사용됨(한 테이블로 로드할 때나 로드되고 있는 모든 테이블에 대해 동일한 수의 레코드를 건너 뛸 때만 이 옵션을 사용)
•LOAD :  SKIP에 의해 지정된 레코드를 건너 뛴 다음 로드할 레코드 수를 지정 
•ERRORS : 배드 레코드의 최대 수
•ROWS : conventional 로드의 경우 각 삽입 전에 배열에 구축될 행의 수 지정(direct path로드의 경우 이 키워드는 각 data save마다 입력으로부터 읽어들일 행의 근사 수를 정의, Direct로드는 data save 전에 완전한 블록을 구축하고 버릴 행과 부적합한 행을거부한다.)
•BINDSIZE : conventional 로드의 경우 각 데이터베이스 호출시 삽입될 행의 배열을 구축하는데 사용될 최대 바이트 수를 지정(ROWS 파라미터도 지정되면 SQL*Loader는 BINDSIZE의 제한에 따라 ROWS에 의해 정의된 만큼의 행을 구축합니다.)
•DIRECT :  TRUE로 설정되면 SQL*Loader는 direct path를 사용. 반대의 경우는 기본 값인 conventional path 사용.
•PARFILE : 모든 로드 파라미터를 포함하고 있는 파일의 이름을 지정(명령 라인에 정의된 파라미터는  파라미터 파일에 정의된 값들을 무효화합니다.)
•PARALLEL : direct 로드에서만 적합한 이 파라미터는 다중 병렬 direct 로드가 수행되도록 지원
•FILE : 병렬 direct 로드의 경우 임시 세그먼트가 생성될 파일을 지정

 

 

 

 

 

 

 

 

 

 


--------------------------------------------------------------------------------

 

 

 

  
   Control File 예(Control File에서 데이터를 포함 할 경우)  
    LOAD DATA
    INFILE *
    REPLACE
    INTO TABLE  mydept  <-- 오라클의 테이블 이름
    FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
    (DEPTNO, DNAME)
    BEGINDATA
    40,SALES
    50,"RESEARCH"

    60,"ART"


 
  

참고 : 
   - Control File에서 데이터를 포함하지 않을 경우에는 INFILE 다음에 DATA파일을 지
        정하고 BEGINDATA 부터 생략 하면 된다.
   - NOLOGGING 키워드를 사용하여 테이블에 NOLOG 속성을 설정하는 것과 콘트롤 
     파일에 UNRECOVERABLE 옵션을 사용하는 것은 서로 같다.

 
6. Data File
  ① 콘트롤 파일에서 정의된 형식의 입력을 위한 데이터가 있다.
  ② UpLoad될 데이터를 Control File에 정의 할 수도 있고 Data File에 따로 분리 할 수도 
      있다.
   
7. Log File
  - 로드 시작/종료 시간, 총로드시간등 정보를 제공 
  - Load상태 정보를 저장
  -로드된 행의 수, 에러로 인해 로드가 거부된 행의 수, 버려진(Discard) 행의 수등의
   정보를 제공 한다.
  

 

출처 : ONJ프로그래밍 (http://www.onjprogramming.co.kr)


--------------------------------------------------------------------------------

 

 

 

 

(예제)

1. 연습용 테이블 생성

 


SQL> create table bbangmi_list(

  2  bbang_no           number not null primary key,

  3  food                       varchar2(30) not null,

  4  when                       varchar2(4)

  5  );

 


테이블이 생성되었습니다.

 

 

 

 

 

--------------------------------------------------------------------------------

 

 

 

 

 

2. 제어파일 데이터가 들어있는 경우

(C:\Documents and Settings\onj에 저장했다)

 


myfood.ctl파일을 만들었다.


LOAD DATA

INFILE *

INTO TABLE bbangmi_list

FIELDS TERMINATED BY','

(BBANG_NO, FOOD, WHEN)

BEGINDATA

10, 떡볶이, 간식

20, 피자, 저녁

30, 치킨, 점심

40, 맥주, 아침

50, 커피, 아침

 

 

 

3. 실행

 

 

C:\Documents and Settings\onj>sqlldr userid=scott/tiger control = 'myfood.ctl'

 


SQL*Loader: Release 11.2.0.1.0 - Production on 금 8월 2 15:47:22 2013

 


Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

 


커밋 시점에 도달 - 논리 레코드 개수 5

 

 

 

 

 

 

4. 데이터 insert 실행여부 확인

(저장폴더에는 이제 myfood.log가 생성되어있다.)

 


SQL> connect scott/tiger

 

 

SQL> select*from bbangmi_list;

 


  BBANG_NO FOOD                           WHEN

---------- ------------------------------ ----

        10 떡볶이                         간식

        20 피자                           저녁

        30 치킨                           점심

        40 맥주                           아침

        50 커피                           아침

 

 

 

 

 

 

 

--------------------------------------------------------------------------------

 


2. 제어파일과 데이터 파일이 분리된 경우
#. control file 부분 : food.ctl저장


#. DATA : food.dat저장

 

 

@ food.ctl 내용


LOAD DATA

INFILE 'food.dat'       

APPEND                

INTO TABLE bbangmi_list

FIELDS TERMINATED BY ','

(bbangmi_no,food,when)

 

 

 

 

--------------------------------------------------------------------------------

 

 

 

 

@ food.data 내용


60,금식,안돼

20,초콜렛,간식

10,콜라,저녁

 

 

 

(**주의!! data 파일에 빈칸이 있으면 자료가 안들어가 ㅠㅜㅠㅜㅠㅜㅠㅜ

예: 60, 금식, 안돼 nononono!!!

바른 답 : 60,금식,안돼 goooooooooood!!!

 

 

 

 


3. 실행


C:\Documents and Settings\onj>sqlldr userid=scott/tiger control = 'food.ctl'

 

 

SQL*Loader: Release 11.2.0.1.0 - Production on 금 8월 2 15:57:29 2013

 


Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

 


커밋 시점에 도달 - 논리 레코드 개수 2

커밋 시점에 도달 - 논리 레코드 개수 3

 

 

 

 


(dir확인)


2013-08-02  오후 03:57                56 food.bad

2013-08-02  오후 03:55               110 food.ctl

2013-08-02  오후 03:56                54 food.DAT

2013-08-02  오후 03:57             1,972 food.log

2013-08-02  오후 12:08     1,455,095,808 full.dmp

2013-08-01  오전 11:20    <DIR>          My Documents

2013-08-02  오후 02:26               157 mydept.ctl

2013-08-02  오후 02:26             1,537 mydept.log

2013-06-22  오후 03:31       923,430,912 myemp.dmp

2013-08-02  오후 03:46               179 myfood.ctl

2013-08-02  오후 03:47             1,549 myfood.log

2013-06-15  오전 11:22    <DIR>          Oracle

2013-08-02  오전 11:34     1,455,095,808 scott.dmp

2013-06-22  오전 10:32             4,096 scott.emp

2013-07-18  오후 03:01                 0 select

2013-07-18  오후 03:02                 0 spool

2013-08-02  오전 11:44             8,192 structure.dmp

2013-07-18  오후 05:30                 0 test.sql

2013-08-02  오전 10:16    <DIR>          바탕 화면

2011-07-25  오후 03:41    <DIR>          시작 메뉴

              34개 파일       5,289,240,626 바이트

               7개 디렉터리  77,600,690,176 바이트 남음

 

 

 

food.bad 파일이 생성됨 :

----내용----

20,초콜렛,간식


10,콜라,저녁

------------

 


(해석) BAD파일이 생긴 이유는 이미 기존에 위의 실습을 통해 10, 20, 30번,40번,50번은 저장 되어 있는 상태.

그러므로 APPEND 되는 10, 20, 60 번중에서 10, 20번을 가진 데이터는 DISCARD 되는 것

(bbang_no 가 Primary Key)

 

 

 

 


4. 데이터 insert 여부 확인


SQL> select * from bbangmi_list;

 


  BBANG_NO FOOD                           WHEN

---------- ------------------------------ ----

        10 떡볶이                         간식

        20 피자                           저녁

        30 치킨                           점심

        40 맥주                           아침

        50 커피                           아침

        60 금식                           안돼

 


6 개의 행이 선택되었습니다.


 

728x90
728x90

자바 및 톰켓 경로 export 하기

 

export JAVA_HOME=/usr/local/jdk1.7.0_07
export CATALINA_HOME=/was/tomcat/tomcat7
export PATH=$PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/jre/bin/lib/ext:$JAVA_HOME/lib/tools.jar:$CATALINA_HOME/lib/jsp-api.jar:$CATALINA_HOME/lib/servlet-api.jar

728x90

'프로그래밍 > 리눅스' 카테고리의 다른 글

리눅스 링크 거는 법  (0) 2015.04.27
linux address already in use  (0) 2015.04.27
리눅스 심볼릭 링크 걸기  (0) 2013.09.30
톰켓설치  (0) 2013.09.30
Linux java 설치  (0) 2013.09.30

+ Recent posts