달력

5

« 2025/5 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
2011. 7. 4. 13:26

JAVA에서 엑셀 파일 읽고 쓰기 I.lib()/I.lib(Java)2011. 7. 4. 13:26

.. .. ..
 우선 http://www.andykhan.com/jexcelapi/download.html 에 가서 jexcelapi_2_4_5.tar.gz 파일을 다운로드해서 압출을 해제한다.
압축 파일안에 보면 jxl.jar 파일이 있다. java classpath에 이 파일을 걸어준다.
아래 링크는 Tutorial이 나와있는 사이트이다.



자바로 엑셀을 핸들링 할 수 있는 방법은 크게 두가지로 나누어 진다.

1. Java Excel API
http://www.andykhan.com/jexcelapi/
2. POI
http://jakarta.apache.org/poi/index.html

※ 흔히 POI를 엑셀을 핸들링 하기 위한 것으로만 오해하기 쉬운데, POI 프로젝트는 마이크로소프트 OLE 2 복합 도큐먼트 포맷의 파일을 순수 자바를 이용하여 핸들링하는 APIs로 구성되어 있다. OLE 2 복합 도큐먼트 포맷의 파일은 Microsoft 엑셀 혹은 워드 파일 등의 대부분의 오피스 파일들을 나타낸다.

일반적으로 엑셀에 대한 핸들링만을 수행할 때에는 Jxl을 권장한다. 엑셀을 핸들링 할 때 엑셀에서 가장 작은 단위는 "셀"이다. 모든 작업은 이 셀을 중심으로 이루어진다.

※ 주의할 점
  1. 엑셀 쉬트상에 "C15"라는 셀에 데이터가 있다고 가정하자 (15행 C열을 나타낸다). 이 때 Jxl에서는 A1 (1행 A열)부터 C15까지는 실제 데이터가 없을 경우에라도 null이 아닌 빈데이터가 있다고 인식한다. 즉, D열 이상이나, 16행 이상을 접근 할 때에 null로 인식한다. 하지만 POI에서는 C15 이내에 있다 하더라도 실제 데이터가 없을 때에는 null로 인식한다.

  2. Jxl에서는 각 셀의 데이터 타입을 실제 엑셀 파일에서 지정된 셀의 타입을 따르고, POI에서는 셀의 실제 데이터 형을 따른다. 예를 들어 특정 셀의 타입을 text 로 잡아놓고, 데이터를 1234로 입력하면 Jxl에서는 "12345"로 인식하고, POI에서는 12345.00 이런 식으로 인식한다.


ex) Java Excel API를 이용한 Excel 읽기
import jxl.*;

// .. 중간생략

Workbook workbook = null;
Sheet sheet = null;
Cell cell = null;

try
{
//엑셀파일을 인식
workbook = Workbook.getWorkbook( new File( szFileName));

//엑셀파일에 포함된 sheet의 배열을 리턴한다.
//workbook.getSheets();

if( workbook != null)
{
//엑셀파일에서 첫번째 Sheet를 인식
sheet = workbook.getSheet(0);

if( sheet != null)
{
//셀인식 Cell a1 = sheet.getCell( 컬럼 Index, 열 Index);
//셀 내용 String stringa1 = a1.getContents();

//기록물철의 경우 실제 데이터가 시작되는 Row지정
int nRowStartIndex = 5;
//기록물철의 경우 실제 데이터가 끝 Row지정
int nRowEndIndex = sheet.getColumn( 2).length - 1;

//기록물철의 경우 실제 데이터가 시작되는 Column지정
int nColumnStartIndex = 2;
//기록물철의 경우 실제 데이터가 끝나는 Column지정
int nColumnEndIndex = sheet.getRow( 2).length - 1;

String szValue = "";

for( int nRow = nRowStartIndex; nRow <= nRowEndIndex; nRow++ )
{
for( int nColumn = nColumnStartIndex; nColumn <= nColumnEndIndex ; nColumn++)
{
szValue = sheet.getCell( nColumn, nRow).getContents();
System.out.print( szValue);
System.out.print( "\t" );
}
System.out.println();
}
}
else
{
System.out.println( "Sheet is null!!" );
}
}
else
{
System.out.println( "WorkBook is null!!" );
}
}
catch( Exception e)
{
e.printStackTrace();
}
finally
{
if( workbook != null)
{
workbook.close();
}
}


ex) Jxl을 이용하여 Excel에 데이터 저장하기
import jxl.*;

// .. 중간생략

WritableWorkbook workbook = null;
WritableSheet sheet = null;

File excelFile = new File( szFileName);
Label label = null;

long start = 0;
long end = 0;

try
{
for(int i = 0 ; i < 10; i++)
{
workbook = Workbook.createWorkbook( excelFile);
workbook.createSheet("sheet1", 0);
sheet = workbook.getSheet(0);

for( int j = 0; j < 10000; j++){
label = new Label( j, 0, "test cell");
sheet.addCell( label);
}

kidsbook.write();
kidsbook.close();
}
}
catch( Exception e)
{
}


ex) POI를 이용한 Excel 파일 읽기
import org.apache.poi.hssf.usermodel.*;

// .. 중간 생략

HSSFWorkbook workbook = null;
HSSFSheet sheet = null;
HSSFRow row = null;
HSSFCell cell = null;

try
{
workbook = new HSSFWorkbook( new FileInputStream( new File( szFileName)));

if( workbook != null)
{
sheet = workbook.getSheetAt( 0);

if( sheet != null)
{
//기록물철의 경우 실제 데이터가 시작되는 Row지정
int nRowStartIndex = 5;
//기록물철의 경우 실제 데이터가 끝 Row지정
int nRowEndIndex = sheet.getLastRowNum();

//기록물철의 경우 실제 데이터가 시작되는 Column지정
int nColumnStartIndex = 2;
//기록물철의 경우 실제 데이터가 끝나는 Column지정
int nColumnEndIndex = sheet.getRow( 2).getLastCellNum();

String szValue = "";

for( int i = nRowStartIndex; i <= nRowEndIndex ; i++)
{
row = sheet.getRow( i);

for( int nColumn = nColumnStartIndex; nColumn <= nColumnEndIndex ; nColumn++)
{
cell = row.getCell(( short ) nColumn);

if( cell == null)
{
continue;
}
if( cell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC)
{
szValue = String.valueOf( cell.getNumericCellValue());
}
else
{
szValue = cell.getStringCellValue();
}

System.out.print( szValue);
System.out.print( "\t" );
}
System.out.println();
}
}
else
{
System.out.println( "Sheet is null!!" );
}
}
else
{
System.out.println( "WorkBook is null!!" );
}
}
catch(Exception e){
e.printStackTrace();
}


ex) POI를 이용한 브라우저에서 Excel에 데이터 저장하여 보여주기

import org.apache.poi.hssf.usermodel.*;

// ... 생략

public void writeStream( PTSEvaluation[] arrPTSEvaluation) throws Exception
{
try
{
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet( "new sheet");
HSSFRow row = null;
HSSFCell cell = null;
HSSFCellStyle style = null;

ServletOutputStream excelOut = ServiceContext.getResponse().getOutputStream();
ServiceContext.getResponse().setHeader( "Content-Disposition", "attachment;filename=EvaluationCompensationList.xls");
ServiceContext.getResponse().setContentType( MimeType.getMimeType( "xls"));

//로우 생성
row = sheet.createRow( ( short)0);
row.setHeightInPoints( 30);

//셀에 적용한 스타일을 생성한다.
style = PTSUtil.setExcelHeaderStyle( wb);

// 셀 생성
cell = row.createCell( (short)0);

//한글 처리
cell.setEncoding( HSSFCell.ENCODING_UTF_16);

//셀에 데이터 입력하기
cell.setCellValue( "값");

//셀에 스타일 적용하기
cell.setCellStyle(style);

//.. 중간생략 ( 이런 방식으로 로우와 셀을 증가 시키면서 작업을 수행하면 된다.

wb.write( excelOut);
excelOut.flush();
}
catch( Exception e)
{
e.printStackTrace();
throw e;
}
finally
{
ServiceContext.getResponse().getOutputStream().close();
}
}


-----------------------------------------------------------------------------------
HSSF를 이용해 자바에서 간단한 엑셀 파일을 생성하는 방법을 살펴보도록 하겠다. HSSF를 사용하기 위해서는 먼저 POI 라이브러리를 다운받아야 하는데 아래의 주소에 가서 라이브러리를 다운받은 후 클래스 패스를 잡아주면 된다.


아래의 소스는 간단한 엑셀파일 생성에 관한 소스이다.
import java.io.*;
import org.apache.poi.hssf.usermodel.*;

public class NumberForm {
public static void main(String[] args) throws IOException, InterruptedException {
// 먼저 파일이 되는 workbook부분을 생성한다.
HSSFWorkbook workbook = new HSSFWorkbook();

// workbook부분에 sheet를 새로 생성한다.
HSSFSheet sheet = workbook.createSheet("new");

// sheet부분에 행을 새로 생성한다.
HSSFRow row = sheet.createRow((short)0);

// 새로 생성된 행 부분에 셀을 추가한다.
HSSFCell cell = row.createCell((short)0);

// 셀 값을 집어넣는다(숫자형)
cell.setCellValue(1);

// 셀 값을 집어넣는다(실수형)
row.createCell((short)1).setCellValue(1.2);
// 셀 값을 집어넣는다(문자형)
row.createCell((short)2).setCellValue("string");
// 셀 값을 집어넣는다(boolean형)
row.createCell((short)3).setCellValue(true);

FileOutputStream outFile = new FileOutputStream("newexcelfile.xls");
workbook.write(outFile);
outFile.close();
}
}


새로이 Excel파일을 만드는 방법은 기본적으로 다음과 같다.

1. WorkBook를 만든다 (즉, 파일이 될 부분을 만든다)
2. WorkBook안에 sheet를 만든다
3. sheet안에 행을 만든다
4. 행 안에 기본단위인 셀을 만든다

* 이때 하늘색 바탕으로 표시된 부분이 인텍스 값이 되며, 인덱스는 0부터 시작한다.

[펌] http://jetzt.tistory.com/18

'I.lib() > I.lib(Java)' 카테고리의 다른 글

JAVA 로 MAIL 보내기.(SMTP 방식?! )  (2) 2011.09.26
필터 스트림  (1) 2011.08.02
Spy 설정 방법.  (1) 2011.03.31
SPY 설정 방법. ( tomcat + axis2 + ibatis )  (0) 2010.10.28
JNI (JAVA Native Interface ) 란? & 사용법.  (0) 2010.07.27
.
:
Posted by .07274.
2011. 6. 30. 15:14

mysql 패스워드 변경 I.lib()/I.lib(Mysql)2011. 6. 30. 15:14

.. .. ..

1. mysql -u root -p

2. use mysql

3. update user set password=password('12345') where user='root';

4.flush privileges;      <-- 적용

[주의]# mysql -u root -p
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
그대는 mysql 을 shutdown 하거나 reload 하면 된다.
# /usr/local/mysql/bin/mysqladmin -u root -p shutdown
하면 패스워드를 묻는데 이때 입력하면 설정한 mysql이 적용이된다.
# /usr/local/mysql/bin/mysqladmin -u root -p reload;
------------------------------------------------------------------------------------

# mysql -u root -p [Enter] // root 패스워드로 로그인
Enter password: ******

※ Mysql 서버에 root 패스워드가 설정되면 이제 부터는 mysql 서버에 접속하기 위해서는
위와 같이 -u 뒤에 root입력하고 -p 옵션을 사용하여 패스워드를 사용한다는 것을 명시해야 한다.
그리고 엔터를 치면 root 패스워드를 입력받기 위해 커서가 멈춘다.
(mysql 명령어만 입력하고 엔터를 치면 패스워드를 묻지 앟고 바로 mysql> 프롬프트가 나온 옛 시절을 생각해 보면 금방 차이를 느낄수 있음)

2. 루트 비번 변경
mysql> use mysql;
mysql> update user set password=password('123456') where user='root';
mysql> flush privileges;

3. root 패스워드를 분실한 경우(응급조치)

mysql을 오랫동안 사용하지 않았을 경우에 간혹 root패스워드가 기억나질않아서 당황할 때가 있습니다. 시스템관리자라면 시스템의 root나 MySQL의 root의 암호를 잊어 버렸을 때를 대비해서 패스워드를 새로 설정하는 방법을 반드시 숙지하고 있어야 할 것입니다.

① 실행중인 msyql 종료

# ps -ef | grep mysqld
root 9567 1 0 Mar16 ? 00:00:00 sh ./mysqld_safe
root 9576 9567 0 Mar16 ? 00:00:00 /usr/local/mysql/libexec/mysqld
root 9578 9576 0 Mar16 ? 00:00:00 /usr/local/mysql/libexec/mysqld
root 9579 9578 0 Mar16 ? 00:00:00 /usr/local/mysql/libexec/mysqld

# killall mysqld

② grant-table 미사용모드로 mysql시작(권한 테이블을 사용하지 않는 옵션으로 데몬 실행)

# ./safe_mysqld --skip-grant-tables &
[1] 12084
# Starting mysqld daemon with databases from /usr/local/mysql/data
#

# ./mysql -u root mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1 to server version: 3.22.24
Type 'help' for help.
mysql>

※ mysqld_safe 명령어는 mysql 데몬을 실행시킨다.

③ update문으로 root사용자 패스워드 갱신

mysql> update user set password=password('123') where user = 'root';
Query OK, 3 rows affected (0.00 sec)
Rows matched: 3 Changed: 3 Warnings: 0
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
mysql> \q
Bye

④ 실행중인 mysql 다시 종료(권한 테이블을 사용하지 않는 데몬을 종료)

# ps -ef | grep mysqld
root 12084 11558 0 20:10 pts/2 00:00:00 sh ./mysqld_safe --skip-grant-ta
root 12090 12084 0 20:10 pts/2 00:00:00 /usr/local/mysql/libexec/mysqld
root 12092 12090 0 20:10 pts/2 00:00:00 /usr/local/mysql/libexec/mysqld
root 12093 12092 0 20:10 pts/2 00:00:00 /usr/local/mysql/libexec/mysqld
#
# killall mysqld
mysqld daemon ended
[1]+ Done ./mysqld_safe --skip-grant-tables
#

⑤ Mysql 데몬 재 실행 후 갱신된 패스워드로 로그인

# ./safe_mysqld &
[1] 12102
# Starting mysqld daemon with databases from /usr/local/mysql/data
#

# ps -ef | grep mysql
root 12102 11558 0 20:13 pts/2 00:00:00 sh ./mysqld_safe
root 12108 12102 0 20:13 pts/2 00:00:00 /usr/local/mysql/libexec/mysqld
root 12110 12108 0 20:13 pts/2 00:00:00 /usr/local/mysql/libexec/mysqld
root 12111 12110 0 20:13 pts/2 00:00:00 /usr/local/mysql/libexec/mysqld

# mysql -u root -p
Enter Password: ***************

.
:
Posted by .07274.
.. .. ..

Q. How do I turn on or off file name colors in bash shell?

A. Most modern Linux distro comes with alias that defines colors for your file. However ls command is responsible for displaying color on screen for files, directories and other object.

By default, color is not used to distinguish types of files. You need to pass --color option to ls command.

Task: Turn off colors

Type the following command
$ ls --color=none
Or just remove alias with unalias command:
$ unalias ls

Task: Turn on colors

Use any of the following command:
$ ls --color=auto
$ ls --color=tty


.
:
Posted by .07274.
2011. 6. 24. 18:21

MYSQL에서 charset 설정 확인 방법 I.lib()/I.lib(Mysql)2011. 6. 24. 18:21

.. .. ..

언어설정 문제는 상당히 골치아파 하는거같읍니다....

디비 버젼과 크라이언트 설정에다라서 민감하게 나타나는거같읍니다...


언어설정 확인요령


Pc에 mysql 설치한후 bin 디렉토리에서 실행또는 호스팅서버에 텔넷접속후 실행


mysql -h ip -u id -p password <--db 원격 접속:

mysql>\s

--------------
mysql Ver 12.22 Distrib 4.0.16, for pc-linux (i686)

Connection id: 1612
Current database:
Current user: root@localhost
SSL: Not in use
Current pager: stdout
Using outfile: ''
Server version: 4.0.16-Max
Protocol version: 10
Connection: Localhost via UNIX socket
Client characterset: latin1
Server characterset: latin1

UNIX socket: /var/lib/mysql/mysql.sock
Uptime: 9 hours 47 min 20 sec

Threads: 6 Questions: 506708 Slow queries: 0 Opens: 16 Flush tables: 1 Open tables: 10 Queries per second avg: 14.379

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

설정하기

아래 euckr을 utf-8 로 변경해서 입력


mysql> SET character_set_client = euckr;
mysql> SET character_set_results = euckr;
mysql> SET character_set_connection = euckr;
mysql> SET character_set_database = euckr;
mysql> SET character_server = euckr;
mysql> ALTER DATABASE [DB명] DEFAULT CHARACTER SET euckr;
commit;


이렇게 하면 한글 잘됩니다.

환경은 Linux + MySQL 4.1.8입니다. ^^

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

환경설정화일에 직접 설정하기<----서버운용자가 반대할수있겠죠

my.ini 를 열고 편집


[mysqld]

default-character-set=euckr
character-set-client-handshake = FALSE
---------------------------------------------------------------------

.
:
Posted by .07274.
2011. 6. 24. 18:17

리눅스 charset 확인 및 변경 I.lib()/I.lib(Unix)2011. 6. 24. 18:17

.. .. ..

서버 charset 확인

- 명령어
vi /etc/sysconfig/i18n


/etc/sysconfig/i18n 파일의 기본내용

LANG="ko_KR.EUC_KR" → LANG="ko_KR.UTF-8"

SUPPORTED="ko_KR.EUC_KR:ko_KR:ko" → SUPPORTED="ko_KR.UTF-8:ko_KR:ko"

.
:
Posted by .07274.
2011. 6. 24. 13:37

리눅스 사용자 계정 생성 I.lib()/I.lib(Unix)2011. 6. 24. 13:37

.. .. ..
1. 그룹 생성.
root로 로그인후
      groupadd -g 1000 testgroup (그룹번호 1000번 이름은 testgroup)
2. 계정 생성
useradd -d /home/testuser -g testgroup -m -s /bin/bsh testuser( 디렉토리에 누구 그룹에 어느 쉘써서 누구로 만든다)
 
.
:
Posted by .07274.
.. .. ..

우선 date 명령어를 이용하여 시스템의 현재 시간을 알아본다.

#date

Mon Nov 6 13:36:44 KST 2006

date 는 기본적으로 /bin 폴더 아래 위치한다.

현재 시간이랑 맞지 않는다면 다음 2가지 방법을 통해서 해결할 수 있다.

시스템마다 지원이 되고 안되고의 차이점이 있지만 보통적인 방법으로는

#rdate -s time.bora.net 또는

#rdate -s time.kriss.re.kr

을 하면 자동적으로 변경을 해준다.

하지만 유닉스 계열에서는 이 명령어가 되지 않으므로 다음과 같은 수동적인 방법으로 시스템 시간을 맞출 수 있다.

#date 1342

아래와 같이 하면 2009년 3월 17일 18시 06분 00 초로 변경해준다.

#date -s "2009-03-17 18:06:00"

시간이 13시 42분으로 변경된다.

'I.lib() > I.lib(Unix)' 카테고리의 다른 글

리눅스 charset 확인 및 변경  (1) 2011.06.24
리눅스 사용자 계정 생성  (0) 2011.06.24
rm -rf 복구 방법  (0) 2011.06.03
아파치 & 톰켓 실행 순서 및 확인.  (1) 2011.02.07
Java String charset 바꾸기  (1) 2010.11.11
.
:
Posted by .07274.
2011. 6. 20. 15:32

Eclipse - SVN 설치 방법 I.lib()/I.lib(Eclipse)2011. 6. 20. 15:32

.. .. ..
1. 메뉴 - help - eclipse marketplace 클릭

2. search 의 find에 subversion 을 검색

3. Subversive - SVN Team Provider 를 인스톨 한다.

4. 자동으로 이클립스가 restart 된다.

5. 재 시작후 svn version 선택이 생기는데 SVN Kit 1.3.3을 선택한다(선택사항)

6. 다시 svn 을 다운받는다(자동으로 해준다,)

7. 인스톨후 다시 리스타트 한다..(귀찮군 슬슬..)

8. 끝이다. SVN Repository 익스플로어 불러다 사용하기.
.
:
Posted by .07274.
2011. 6. 3. 13:54

rm -rf 복구 방법 I.lib()/I.lib(Unix)2011. 6. 3. 13:54

.. .. ..
리눅스에서의 파일 삭제는 신중을 기해야 한다. 왜냐면 삭제된 파일은 복구
할 수 없기 때문이다. 이것이 정석이였습니다. (참고로 ext2, ext3 파일시스템 에서만 가능)

물론 rm 의 소프트링크나 다른 삭제 프로그램으로 대체하는 프로그램들도 있습
니다만 rm 자체의 복구는 없다고 알고 있으신 분들이 대부분 일 겁니다.

해답은

debugfs 라는 명령어 입니다. (man page 참조)

실제 사용예를 들어 설명하겠습니다.

가정1) /home/pds/portsentry.tar.gz 라는 파일이 있음.
가정2) /home 파티션은 hda8 입니다. (df -h 로 확인)
가정3) rm -f /home/pds/portsentry.tar.gz 명령으로 지웠음.
가정4) root 로 작업.

복구 절차.

1. #debugfs /dev/hda8

=> 설명 : hda8 파티션에 대해서 검사를 한다.

2. debugfs:

=> 대기상태를 뜻함. 이곳에서 lsdel 을 입력하고 엔터.
계속...

debugfs: lsdel
99 deleted inodes found.
Inode Owner Mode Size Blocks Time deleted
108123 0 100644 239 1/ 1 Thu Jan 3 01:25:33 2002
18417 0 100644 426625 420/ 420 Thu Jan 3 01:26:34 2002
45007 0 100644 343 1/ 1 Thu Jan 3 01:29:59 2002
28691 0 100400 879 1/ 1 Thu Jan 3 01:38:29 2002
18394 0 40755 0 1/ 1 Thu Jan 3 01:58:54 2002
..
.
14356 0 100644 2325 3/ 3 Fri Jan 25 16:13:24 2002
61239 0 100644 43034 44/ 44 Fri Jan 25 16:13:31 2002
debugfs:

위와 같은 상태로 나오고 다시 대기상태로 됩니다. 실제로는 너무 많이 나오더
군요.. (내가 그렇게 많이 지웠었나? '.'a)

이제 이 목록중에서 하나를 선택해서 살려야 합니다. 다행히도 살리고자 하는
파일은 가장 최근에 지운 파일이므로 가장 아래쪽에 있는 것이겠죠.

debugfs: dump <61239> /home/debugfs/portsentry.tar.gz

=> Inode 값을 <> 안에 적어줍니다. 뒤에는 복구할 파일 이름을 적어주시면 됩
니다.
=> 복구할 파일은 다른 디렉토리로 지정해 주시는게 좋습니다. 별 상관은 없지
만...

#cd /home/debugfs
#tar -zxvf portsentry.tar.gz // 정상적으로 압축이 풀리더군요.

=> 아주 훌륭하게 복구가 되었더군요. ^^v

임의로 portsentry.tar.gz 를 지워서 테스트를 한 것입니다.

debugfs: 상태에서 사용할 수 있는 명령어는 help 를 쳐보면 알 수 있습니다.
끝내는 것은 q, quit 입니다.



아래는 debugfs: 에서 사용가능한 명령어들 입니다.
---------------------------------------------------------------------

Available debugfs requests:

show_debugfs_params, params
Show debugfs parameters
open_filesys, open Open a filesystem
close_filesys, close Close the filesystem
feature, features Set/print superblock features
dirty_filesys, dirty Mark the filesystem as dirty
init_filesys Initalize a filesystem (DESTROYS DATA)
show_super_stats, stats Show superblock statistics
ncheck Do inode->name translation
icheck Do block->inode translation
change_root_directory, chroot
Change root directory
change_working_directory, cd
Change working directory
list_directory, ls List directory
show_inode_info, stat Show inode information
link, ln Create directory link
unlink Delete a directory link
mkdir Create a directory
rmdir Remove a directory
rm Remove a file (unlink and kill_file, if
appropriate)
kill_file Deallocate an inode and its blocks
clri Clear an inode's contents
freei Clear an inode's in-use flag
seti Set an inode's in-use flag
testi Test an inode's in-use flag
freeb Clear a block's in-use flag
setb Set a block's in-use flag
testb Test a block's in-use flag
modify_inode, mi Modify an inode by structure
find_free_block, ffb Find free block(s)
find_free_inode, ffi Find free inode(s)
print_working_directory, pwd
Print current working directory
expand_dir, expand Expand directory
mknod Create a special file
list_deleted_inodes, lsdel
List deleted inodes
write Copy a file from your native filesystem
dump_inode, dump Dump an inode out to a file
cat Dump an inode out to stdout
lcd Change the current directory on your native
filesystem
rdump Recursively dump a directory to the native
filesystem
help Display info on command or topic.
list_requests, lr, ? List available commands.
quit, q Leave the subsystem.

from : kldp.org
.
:
Posted by .07274.
2011. 5. 31. 18:30

MY SQL 날짜 함수 I.lib()/I.lib(Mysql)2011. 5. 31. 18:30

.. .. ..

select send_tel_no,
          call_end_time,
          date_format(call_end_time,'%Y-%m-%d %h:%i:%s') ,
          DATE_ADD(date_format(call_end_time,'%Y-%m-%d %h:%i:%s'),INTERVAL -30 MINUTE)
   from tb_call_result_info
 where send_tel_no = '01030306426' 
    and call_end_time > '20110513170603'

DATE_FORMAT 은 CHAR를 DATE로 바꿔준다(TO_DATE와 동일)
DATA_ADD 는 데이터를 더해준다. 빼고싶을때는 INTERVAL 에 -를 넣어주면 그만큼 뺀다.
STR_DATE_FORMAT 는 DATE를 CHAR로 바꿔준다는데 안해봤다;;

- DAYOFWEEK(date) : 해당 날짜의 요일을 숫자로 반환한다. 일요일은 1, 토요일은 7 이다.
- 예 : select DAYOFWEEK('1998-02-03');

- WEEKDAY(date) : 해당 날짜에 대한 요일을 반환한다. 월요일은 0, 일요일은 6 이다.
- 예 : select WEEKDAY('1997-10-04 22:23:00');

- DAYOFYEAR(date) : 해당 날짜의 1월 1일부터의 날수를 반환한다. 결과값은 1에서 366 까지이다.
- 예 : select DAYOFYEAR('1998-02-03');

- YEAR(date) : 해당 날짜의 년을 반환한다.
- 예 : select YEAR('98-02-03');

- MONTH(date) : 해당 날짜의 월을 반환한다.
- 예 : select MONTH('1998-02-03');

- DAYOFMONTH(date) : 해당 날짜의 일을 반환한다. 결과값은 1 에서 31 까지이다.
- 예 : select DAYOFMONTH('1998-02-03');

- HOUR(time) : 해당날짜의 시간을 반환한다. 결과값은 0 에서 23 이다.
- 예 : select HOUR('10:05:03');

- MINUTE(time) : 해당날짜의 분을 반환한다. 결과값은 0 에서 59 이다.
- 예 : select MINUTE('98-02-03 10:05:03');

- SECOND(time) : 해당날짜의 초를 반환한다. 결과값은 0 에서 59 이다.
- 예 : select SECOND('10:05:03');

- DAYNAME(date) : 해당 날짜의 요일 이름을 반환한다. 일요일은 'Sunday' 이다.
- 예 : select DAYNAME("1998-02-05");

- MONTHNAME(date) : 해당 날짜의 월 이름을 반환한다. 2월은 'February' 이다.
- 예 : select MONTHNAME("1998-02-05");

- QUARTER(date) : 해당 날짜의 분기를 반환한다. 결과값은 1 에서 4 이다.

- WEEK(date,first) : 1월 1일부터 해당날가지의 주 수를 반환한다. 주의 시작을 일요일부터 할경우는 두번째 인자를 0, 월요일부터 시작할 경우는 1 을 넣는다. 결과값은 1 에서 52 이다.
- 예 : select WEEK('1998-02-20',1);

- PERIOD_ADD(P,N) : P (형식은 YYMM 또는 YYYYMM 이어야 한다.) 에 N 만큼의 달 수를 더한값을 반환한다. 주의할것은 두번째 인자는 숫자라는 것이다.
- 예 : select PERIOD_ADD(9801,2);

- PERIOD_DIFF(P1,P2) : 두개의 인자 사이의 달 수를 반환한다. 두개의 인자 모두 형식은 YYMM 또는 YYYYMM 이어야 한다.

- DATE_ADD(date,INTERVAL expr type) : 날짜를 더한 날짜를 반환한다.
- DATE_SUB(date,INTERVAL expr type) : 날짜를 뺀 날짜를 반환한다.
- ADDDATE(date,INTERVAL expr type) : DATE_ADD(date,INTERVAL expr type) 와 동일하다.
- SUBDATE(date,INTERVAL expr type) : DATE_SUB(date,INTERVAL expr type) 와 동일하다.
- EXTRACT(type FROM date) : 날짜에서 해당 부분을 추출한다.
- 예 : SELECT DATE_ADD("1997-12-31 23:59:59", INTERVAL 1 SECOND);
SELECT DATE_ADD("1997-12-31 23:59:59", INTERVAL 1 DAY);
SELECT DATE_ADD("1997-12-31 23:59:59", INTERVAL "1:1" MINUTE_SECOND);
SELECT DATE_SUB("1998-01-01 00:00:00", INTERVAL "1 1:1:1" DAY_SECOND);
SELECT DATE_ADD("1998-01-01 00:00:00", INTERVAL "-1 10" DAY_HOUR);
SELECT DATE_SUB("1998-01-02", INTERVAL 31 DAY);
SELECT EXTRACT(YEAR FROM "1999-07-02");
SELECT EXTRACT(YEAR_MONTH FROM "1999-07-02 01:02:03");
SELECT EXTRACT(DAY_MINUTE FROM "1999-07-02 01:02:03");
- 참고 : type 에 사용되는 키워드는 SECOND, MINUTE, HOUR, DAY, MONTH, YEAR, MINUTE_SECOND, HOUR_MINUTE, DAY_HOUR, YEAR_MONTH, HOUR_SECOND, DAY_MINUTE, DAY_SECOND 이다.
- 주의 : 계산한 달의 날수가 작을 경우는 해당달의 마지막 날을 반환한다. 예를 들어 select DATE_ADD('1998-01-30', Interval 1 month); 의 경우 1998-02-28 을 반환한다.

- TO_DAYS(date) : 0 년 부터의 날짜수를 반환한다. 이 함수는 1582 이전 날에 대해서는 계산하지 않는다.
- 예 : select TO_DAYS(950501);

- FROM_DAYS(N) : 해당 숫자만큼의 날짜를 반환한다. 이 함수는 1582 이전 날에 대해서는 계산하지 않는다.
- 예 : select FROM_DAYS(729669);

- DATE_FORMAT(date,format) : 날짜를 해당 형식의 문자열로 변환하여 반환한다.
- 예 : select DATE_FORMAT('1997-10-04 22:23:00', '%W %M %Y');
select DATE_FORMAT('1997-10-04 22:23:00', '%H:%i:%s');
select DATE_FORMAT('1997-10-04 22:23:00', '%D %y %a %d %m %b %j');
select DATE_FORMAT('1997-10-04 22:23:00', '%H %k %I %r %T %S %w');
- 참고 : 형식은 다음과 같다. %M (달 이름), %W (요일 이름), %Y (YYYY 형식의 년도), %y (YY 형식의 년도), %a (요일 이름의 약자), %d (DD 형식의 날짜), %e (D 형식의 날짜), %m (MM 형식의 날짜), %c (M 형식의 날짜), %H (HH 형식의 시간, 24시간 형식), %k (H 형식의 시간, 24시간 형식), %h (HH 형식의 시간, 12시간 형식), %i (MM 형식의 분), %p (AM 또는 PM)

- TIME_FORMAT(time,format) : DATE_FORMAT(date,format) 과 같은 방식으로 사용할수 있으나 날 이상의 것에 대해서는 NULL 이나 0 을 반환한다.

- CURDATE() : 현재날짜를 반환한다. 숫자와 연산을 할경우 숫자로 변환된다. 형식은 'YYYY-MM-DD' 또는 YYYYMMDD 이다.
- 예 : select CURDATE();
select CURDATE() + 0;

- CURTIME() : 현재시간을 반환한다. 숫자와 연산을 할경우 숫자로 변환된다. 형식은 'HH:MM:SS' 또는 HHMMSS 이다.
- 예 : select CURTIME();
select CURTIME() + 0;

- SYSDATE() : 현재날짜시간을 반환한다. 숫자와 연산을 할경우 숫자로 변환된다. 형식은 'YYYY-MM-DD HH:MM:SS' 또는 YYYYMMDDHHMMSS 이다.
- 예 : select NOW();
select NOW() + 0;

- NOW() : SYSDATE() 와 동일하다.

- UNIX_TIMESTAMP() : '1970-01-01 00:00:00' 부터의 초를 반환한다. 인자가 주어질 경우는 해당 날짜에 대한 유닉스 시간을 반환한다.
- 예 : select UNIX_TIMESTAMP();
select UNIX_TIMESTAMP('1997-10-04 22:23:00');

- FROM_UNIXTIME(unix_timestamp) : 유닉스시간에서 날짜 형식으로 변환한다.
- 예 : select FROM_UNIXTIME(875996580);

- FROM_UNIXTIME(unix_timestamp,format) : 유닉스시간을 날짜형식으로 변환하고 DATE_FORMAT(date,format) 에서 설명한 포맷으로 변환하여 반환한다.
- 예 : select FROM_UNIXTIME(UNIX_TIMESTAMP(), '%Y %D %M %h:%i:%s %x');

- TIME_TO_SEC(time) : 해당 시간의 0:0:0 에서부터의 초를 반환한다.
- 예 : select TIME_TO_SEC('22:23:00');

- SEC_TO_TIME(seconds) : 초를 시간으로 바꾼다.
- 예 : select SEC_TO_TIME(2378);
.
:
Posted by .07274.