데이터베이스 유틸리티 클래스 Database Utility Class
데이터베이스 유틸리티클래스는 데이터베이스 관리에 도움을 주는 함수들을 제공합니다.
목차
- 유틸리티 클래스 초기화 Initializing the Utility Class
- 데이터베이스 목록조회Listing your Databases
- 테이블 최적화 Optimizing your Tables
- 데이터베이스 정비 Repairing your Databases
- 데이터베이스 최적화 Optimizing your Database
- 결과로부터 CSV 만들기 SV Files from a Database Result
- 결과로부터 XML 만들기 XML Files from a Database Result
- 데이터베이스 백업Backing up your Database
유틸리티 클래스 초기화Initializing the Utility Class
중요: 관리클래스를 초기화 하기위해서는 데이터베이스 드라이버가 실행된 상태라야 합니다. 관리클래스는 데이터베이스 드라이버에 의존합니다
아래와같이 유틸리티클래스를 로드합니다:
$this->load->dbutil()
초기화 되고 나면 함수들을 사용할때$this->dbutil 객체를 이용합니다:
$this->dbutil->some_function()
$this->dbutil->list_databases()
데이터베이스 이름을 담은 배열을 리턴합니다:
$dbs = $this->dbutil->list_databases();
foreach($dbs as $db)
{
echo $db;
}
$this->dbutil->database_exists();
데이터베이스 존재여부를 확인. 리턴값 TRUE/FALSE. 예제:
if ($this->dbutil->database_exists('database_name'))
{
// some code...
}
주의: database_name 부분을 찾고자하는 테이블 명으로 바꿉니다(헐.. db 명이 아니구?).대소문자에 주의하세요.
$this->dbutil->optimize_table('table_name');
정보: 이함수는 MySQL/MySQLi 데이터베이스에서만 사용할수 있습니다.
첫번째 파라미터로 테이블이름을 넘겨주며 , 그 테이블을 최적화 합니다.작업결과에 따라서 TRUE/FALSE을 리턴합니다:
if ($this->dbutil->optimize_table('table_name'))
{
echo 'Success!';
}
정보: 모든 데이터베이스 플렛폼이 테이블 최적화를 지원하지는 않습니다.
$this->dbutil->repair_table('table_name');
정보: 이함수는 MySQL/MySQLi 데이터베이스에서만 사용할수 있습니다.
첫번째 파라미터로 테이블이름을 넘겨주며 , 그 테이블을 수리 합니다. 작업결과에 따라서 TRUE/FALSE을 리턴합니다:
if ($this->dbutil->repair_table('table_name'))
{
echo 'Success!';
}
정보: 모든 데이터베이스 플렛폼이 테이블 최적화를 지원하지는 않습니다.
$this->dbutil->optimize_database();
정보: 이함수는 MySQL/MySQLi 데이터베이스에서만 사용할수 있습니다.
현재 사용중인 데이터베이스를 최적화합니다.작업결과에 따라 데이터베이스 상태가 담긴 배열을 리턴하거나 FALSE를 리턴합니다.
$result = $this->dbutil->optimize_database();
if ($result !== FALSE)
{
print_r($result);
}
정보: 모든 데이터베이스 플렛폼이 테이블 최적화를 지원하지는 않습니다.
$this->dbutil->csv_from_result($db_result)
쿼리결과로부터 CSV를 생성할수 있게 합니다.첫번째 파라미터는 반드시 쿼리실행의 결과객체라야 합니다.예제:
$this->load->dbutil();
$query = $this->db->query("SELECT * FROM mytable");
echo $this->dbutil->csv_from_result($query);
두번째와 세번째 파라미터는 각각 칼럼구분자(delimiter)와 줄바꿈문자로 설정합니다. 기본적으로 탭이 칼럼구분자로,"\n"이 줄바꿈문자입니다.
사용예:
$delimiter = ",";
$newline = "\r\n";
echo $this->dbutil->csv_from_result($query, $delimiter, $newline);
중요: 이함수는 CSV 파일을 생성하는것이 아니라 단순히 CSV레이아웃을 생성합니다.이파일을 저장하러면 파일헬퍼 섹션을 보세요 .
$this->dbutil->xml_from_result($db_result)
쿼리 결과로부터 XML 을 생성해줍니다. 첫번째 파라미터는 쿼리결과 객체이며 두번째 파라미터는 옵션으로 환경설정을 담은 배열을 넘겨줄수 있습니다.
사용예
:
$this->load->dbutil();
$query = $this->db->query("SELECT * FROM mytable");
$config = array (
'root' => 'root',
'element' => 'element',
'newline' => "\n",
'tab' => "\t"
);
echo $this->dbutil->xml_from_result($query, $config);
중요: 이함수는 XML 파일을 생성하는것이 아니라 단순히 XML레이아웃을 생성합니다.이파일을 저장하러면 파일헬퍼 섹션을 보세요 ..
$this->dbutil->backup()
데이터베이스 전체나 각각의 테이블을 백업할수 있도록 합니다.백업데이터는 Zip 이나 Gzip 포멧으로 압축할수 있습니다.
정보: 이함수는 MySQL 데이터베이스에서만 사용할수 있습니다.
주의: PHP에서 사용가능한 메모리가 제한되어있고 실행시간의 제한도 있기 때문에 너무큰 데이터베이스의 백업은 불가능할수 있습니다.큰 데이터베이스는 직접백업하세요 .
사용예
// Load the DB utility class
$this->load->dbutil();
// Backup your entire database and assign it to a variable
$backup =& $this->dbutil->backup();
// Load the file helper and write the file to your server
$this->load->helper('file');
write_file('/path/to/mybackup.gz', $backup);
// Load the download helper and send the file to your desktop
$this->load->helper('download');
force_download('mybackup.gz', $backup);
백업 환경설정 Setting Backup Preferences
백업 환경설정은 배열로 구성되며 백업함수의 첫번째 파라미터로 넘기시면됩니다.
예제:
$prefs = array(
'tables' => array('table1', 'table2'), // Array of tables to backup.
'ignore' => array(), // List of tables to omit from the backup
'format' => 'txt', // gzip, zip, txt
'filename' => 'mybackup.sql', // File name - NEEDED ONLY WITH ZIP FILES
'add_drop' => TRUE, // Whether to add DROP TABLE statements to backup file
'add_insert' => TRUE, // Whether to add INSERT data to backup file
'newline' => "\n" // Newline character used in backup file
);
$this->dbutil->backup($prefs);
백업 환경설정 설명 Description of Backup Preferences
설정 | 기본값 | 옵션 | 설명 |
---|---|---|---|
tables | empty array | None | 백업하고자하는 테이블명 배열. 공백이면 모든 테이블을 백업. |
ignore | empty array | None | 백업루틴에서 제외하고자하는 테이블명.(백업안할 테이블) |
format | gzip | gzip, zip, txt | 백업파일의 포멧. |
filename | the current date/time | None | 백업파일의 파일명.ZIP 압축시에만 필요함 |
add_drop | TRUE | TRUE/FALSE | DROP TABLE 문을 백업파일에 추가할지 여부 |
add_insert | TRUE | TRUE/FALSE | INSERT문을 SQL 백업파일에 추가할지 여부. |
newline | "\n" | "\n", "\r", "\r\n" | SQL 백업파일의 줄바꿈 문자. |