데이터베이스 유틸리티 클래스

데이터베이스 유틸리티 클래스는 데이터베이스를 관리하는 데 도움이 되는 메소드를 포함하고 있습니다.

유틸리티 클래스 초기화

중요

유틸리티 클래스를 초기화하려면 데이터베이스 드라이버가 이미 실행 중이어야 합니다. 유틸리티 클래스가 이에 의존하기 때문입니다.

유틸리티 클래스는 다음과 같이 로드합니다:

$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 문서로 변환합니다.