데이터베이스 유틸리티 클래스¶
데이터베이스 유틸리티 클래스는 데이터베이스를 관리하는 데 도움이 되는 메소드를 포함하고 있습니다.
유틸리티 클래스 초기화¶
중요
유틸리티 클래스를 초기화하려면 데이터베이스 드라이버가 이미 실행 중이어야 합니다. 유틸리티 클래스가 이에 의존하기 때문입니다.
유틸리티 클래스는 다음과 같이 로드합니다:
$this->load->dbutil();
관리하려는 데이터베이스가 기본 데이터베이스가 아닌 경우 DB 유틸리티 로더에 다른 데이터베이스 오브젝트를 전달할 수도 있습니다:
$this->myutil = $this->load->dbutil($this->other_db, TRUE);
위의 예에서 커스텀 데이터베이스 오브젝트를 첫 번째 매개변수로 전달하고 dbutil
오브젝트를 $this->dbutil에 직접 할당하는 대신 반환하도록 합니다.
참고
두 매개변수 모두 개별적으로 사용할 수 있습니다. 건너뛰려면 첫 번째 매개변수에 빈 값을 전달하세요.
초기화되면 $this->dbutil 오브젝트를 사용하여 메소드에 접근합니다:
$this->dbutil->some_method();
데이터베이스 유틸리티 사용¶
데이터베이스 이름 목록 가져오기¶
데이터베이스 이름의 배열을 반환합니다:
$dbs = $this->dbutil->list_databases();
foreach ($dbs as $db)
{
echo $db;
}
데이터베이스 존재 여부 확인¶
특정 데이터베이스가 존재하는지 확인하는 것이 도움이 될 때가 있습니다. 불리언 TRUE/FALSE를 반환합니다. 사용 예시:
if ($this->dbutil->database_exists('database_name'))
{
// some code...
}
참고
database_name을 찾고 있는 데이터베이스 이름으로 변경하세요. 이 메소드는 대소문자를 구분합니다.
테이블 최적화¶
첫 번째 매개변수에 지정된 테이블 이름을 사용하여 테이블을 최적화할 수 있습니다. 성공 또는 실패에 따라 TRUE/FALSE를 반환합니다:
if ($this->dbutil->optimize_table('table_name'))
{
echo 'Success!';
}
참고
모든 데이터베이스 플랫폼이 테이블 최적화를 지원하는 것은 아닙니다. 주로 MySQL에서 사용됩니다.
테이블 복구¶
첫 번째 매개변수에 지정된 테이블 이름을 사용하여 테이블을 복구할 수 있습니다. 성공 또는 실패에 따라 TRUE/FALSE를 반환합니다:
if ($this->dbutil->repair_table('table_name'))
{
echo 'Success!';
}
참고
모든 데이터베이스 플랫폼이 테이블 복구를 지원하는 것은 아닙니다.
데이터베이스 최적화¶
DB 클래스가 현재 연결된 데이터베이스를 최적화할 수 있습니다. DB 상태 메시지를 포함하는 배열 또는 실패 시 FALSE를 반환합니다.
$result = $this->dbutil->optimize_database();
if ($result !== FALSE)
{
print_r($result);
}
참고
모든 데이터베이스 플랫폼이 데이터베이스 최적화를 지원하는 것은 아닙니다. 주로 MySQL에서 사용됩니다.
쿼리 결과를 CSV 파일로 내보내기¶
쿼리 결과에서 CSV 파일을 생성할 수 있습니다. 메소드의 첫 번째 매개변수에는 쿼리의 결과 오브젝트가 포함되어야 합니다. 예시:
$this->load->dbutil();
$query = $this->db->query("SELECT * FROM mytable");
echo $this->dbutil->csv_from_result($query);
두 번째, 세 번째, 네 번째 매개변수를 사용하여 각각 구분자, 개행, 둘러싸기 문자를 설정할 수 있습니다. 기본적으로 쉼표가 구분자로 사용되고, “n”이 새 줄로 사용되며, 큰따옴표가 둘러싸기로 사용됩니다. 예시:
$delimiter = ",";
$newline = "\r\n";
$enclosure = '"';
echo $this->dbutil->csv_from_result($query, $delimiter, $newline, $enclosure);
중요
이 메소드는 CSV 파일을 작성하지 않습니다. 단순히 CSV 레이아웃을 만듭니다. 파일을 작성해야 하는 경우 File 헬퍼를 사용하세요.
쿼리 결과를 XML 문서로 내보내기¶
쿼리 결과에서 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 레이아웃을 만듭니다. 파일을 작성해야 하는 경우 File 헬퍼를 사용하세요.
데이터베이스 백업¶
데이터베이스 백업 참고¶
전체 데이터베이스 또는 개별 테이블을 백업할 수 있습니다. 백업 데이터는 Zip 또는 Gzip 형식으로 압축될 수 있습니다.
참고
이 기능은 MySQL 및 Interbase/Firebird 데이터베이스에서만 사용 가능합니다.
참고
Interbase/Firebird 데이터베이스의 경우 백업 파일 이름이 유일한 매개변수입니다.
$this->dbutil->backup(‘db_backup_filename’);
참고
PHP에서 사용 가능한 제한된 실행 시간과 메모리로 인해 매우 큰 데이터베이스를 백업하는 것이 불가능할 수 있습니다. 데이터베이스가 매우 큰 경우 명령행을 통해 SQL 서버에서 직접 백업하거나, 루트 권한이 없는 경우 서버 관리자에게 요청하세요.
사용 예시¶
// DB 유틸리티 클래스 로드
$this->load->dbutil();
// 전체 데이터베이스를 백업하고 변수에 할당
$backup = $this->dbutil->backup();
// file 헬퍼를 로드하고 서버에 파일 작성
$this->load->helper('file');
write_file('/path/to/mybackup.gz', $backup);
// download 헬퍼를 로드하고 파일을 데스크탑으로 전송
$this->load->helper('download');
force_download('mybackup.gz', $backup);
백업 설정¶
백업 설정은 backup() 메소드의 첫 번째 매개변수에 값 배열을 제출하여 설정합니다.
예시:
$prefs = array(
'tables' => array('table1', 'table2'), // 백업할 테이블 배열
'ignore' => array(), // 백업에서 제외할 테이블 목록
'format' => 'txt', // gzip, zip, txt
'filename' => 'mybackup.sql', // 파일 이름 - ZIP 파일에만 필요
'add_drop' => TRUE, // 백업 파일에 DROP TABLE 문 포함 여부
'add_insert' => TRUE, // 백업 파일에 INSERT 데이터 포함 여부
'newline' => "\n" // 백업 파일에 사용되는 개행 문자
);
$this->dbutil->backup($prefs);
백업 설정 설명¶
설정 |
기본값 |
옵션 |
설명 |
|---|---|---|---|
tables |
빈 배열 |
없음 |
백업할 테이블 배열. 비워두면 모든 테이블이 내보내집니다. |
ignore |
빈 배열 |
없음 |
백업 루틴이 무시할 테이블 배열. |
format |
gzip |
gzip, zip, txt |
내보내기 파일의 파일 형식. |
filename |
현재 날짜/시간 |
없음 |
백업 파일의 이름. zip 압축을 사용하는 경우에만 이름이 필요합니다. |
add_drop |
TRUE |
TRUE/FALSE |
SQL 내보내기 파일에 DROP TABLE 문 포함 여부. |
add_insert |
TRUE |
TRUE/FALSE |
SQL 내보내기 파일에 INSERT 문 포함 여부. |
newline |
“\n” |
“\n”, “\r”, “\r\n” |
SQL 내보내기 파일에 사용할 개행 문자 유형. |
foreign_key_checks |
TRUE |
TRUE/FALSE |
출력 시 외래 키 검사를 활성화 상태로 유지할지 여부. |
클래스 레퍼런스¶
- class CI_DB_utility¶
- backup([$params = array()])¶
- 매개변수:
$params (
array) – 옵션의 연관 배열
- 반환:
원시/(g)zip 압축된 SQL 쿼리 문자열
- 반환 형식:
string
사용자 설정에 따라 데이터베이스 백업을 수행합니다.
- database_exists($database_name)¶
- 매개변수:
$database_name (
string) – 데이터베이스 이름
- 반환:
데이터베이스가 존재하면 TRUE, 그렇지 않으면 FALSE
- 반환 형식:
bool
데이터베이스의 존재를 확인합니다.
- list_databases()¶
- 반환:
찾은 데이터베이스 이름 배열
- 반환 형식:
array
모든 데이터베이스 이름 목록을 검색합니다.
- optimize_database()¶
- 반환:
최적화 메시지 배열 또는 실패 시 FALSE
- 반환 형식:
array
데이터베이스를 최적화합니다.
- optimize_table($table_name)¶
- 매개변수:
$table_name (
string) – 최적화할 테이블 이름
- 반환:
최적화 메시지 배열 또는 실패 시 FALSE
- 반환 형식:
array
데이터베이스 테이블을 최적화합니다.
- repair_table($table_name)¶
- 매개변수:
$table_name (
string) – 복구할 테이블 이름
- 반환:
복구 메시지 배열 또는 실패 시 FALSE
- 반환 형식:
array
데이터베이스 테이블을 복구합니다.
- csv_from_result($query[, $delim = ', '[, $newline = "\n"[, $enclosure = '"']]])¶
- 매개변수:
$query (
object) – 데이터베이스 결과 오브젝트$delim (
string) – 사용할 CSV 필드 구분자$newline (
string) – 사용할 개행 문자$enclosure (
string) – 사용할 둘러싸기 구분자
- 반환:
문자열로 생성된 CSV 파일
- 반환 형식:
string
데이터베이스 결과 오브젝트를 CSV 문서로 변환합니다.
- xml_from_result($query[, $params = array()])¶
- 매개변수:
$query (
object) – 데이터베이스 결과 오브젝트$params (
array) – 설정의 연관 배열
- 반환:
문자열로 생성된 XML 문서
- 반환 형식:
string
데이터베이스 결과 오브젝트를 XML 문서로 변환합니다.