PHP를 이용한 데이터 통합 프로세스 완벽 정리
웹 개발을 하다 보면 여러 데이터베이스 테이블에서 데이터를 조회, 변환, 저장해야 하는 경우가 많습니다. 특히 대규모 데이터 처리나 기존 데이터를 새로운 형태로 변환해야 할 때는 꼼꼼한 설계와 세심한 코드 작성이 필수입니다. 이번에는 PHP와 MySQL을 사용해 데이터 통합 작업을 성공적으로 마친 사례를 공유하고자 합니다.
데이터 통합의 필요성
이번 프로젝트의 목표는 ETxmlgrid 테이블에서 데이터를 조회하고 이를 JSON 형식으로 변환한 후, 변환된 JSON 데이터를 estimatedb 테이블에 저장하는 것이었습니다. 작업은 아래와 같은 순서로 진행되었습니다:
- ETxmlgrid 테이블에서 parentKey를 기준으로 데이터를 분류.
- 데이터를 JSON 형식으로 변환.
- 변환된 데이터를 estimatedb 테이블의 xmlJson 컬럼에 업데이트.
코드 설명
먼저 데이터베이스 연결은 PHP의 PDO(PHP Data Objects)를 사용했습니다. PDO는 보안성과 성능 면에서 뛰어나며, 다양한 데이터베이스를 지원한다는 장점이 있습니다.
require_once($_SERVER['DOCUMENT_ROOT'] . "/lib/mydb.php");
$pdo = db_connect();
데이터베이스 연결이 성공하면 parentKey 목록을 가져옵니다. 이 목록은 ETxmlgrid 테이블에서 데이터를 그룹화하는 기준이 됩니다.
$parentKeysSql = "SELECT DISTINCT parentKey FROM dbeunsungbiz.ETxmlgrid";
$parentKeysStmt = $pdo->query($parentKeysSql);
$parentKeys = $parentKeysStmt->fetchAll(PDO::FETCH_COLUMN);
parentKey 리스트를 가져온 후에는 각 parentKey에 대해 데이터를 조회합니다. 조회된 데이터를 순차적으로 처리하며, 이 과정에서 공백 처리 로직이 포함됩니다.
공백 처리 로직
데이터 조회 중 null 값이나 경고 메시지(Notice)가 포함된 값은 공백으로 변환했습니다. 이렇게 하면 JSON 데이터가 깔끔하게 정리됩니다.
foreach ($rows as &$row) {
foreach ($row as $key => $value) {
if (is_null($value) || strpos($value, 'Notice') !== false) {
$row[$key] = '';
}
}
}
JSON 데이터 생성
정리된 데이터를 JSON으로 변환합니다. PHP의 json_encode 함수는 유니코드 문자까지 처리할 수 있도록 설정되었습니다.
$jsonData = json_encode($rows, JSON_UNESCAPED_UNICODE);
이후 변환된 JSON 데이터를 estimatedb 테이블의 xmlJson 컬럼에 저장합니다.
$updateSql = "UPDATE dbeunsungbiz.estimatedb SET xmlJson = :xmlJson WHERE num = :parentKey";
$updateStmt = $pdo->prepare($updateSql);
$updateStmt->bindValue(':xmlJson', $jsonData, PDO::PARAM_STR);
$updateStmt->bindValue(':parentKey', $parentKey, PDO::PARAM_STR);
$updateStmt->execute();
중간 결과 출력
중간중간 데이터 처리 상태를 확인하기 위해 echo 문을 사용해 로그를 출력했습니다. 이는 디버깅과 진행 상태를 확인하는 데 유용합니다.
echo "Step 3: Processing parentKey = $parentKey<br>";
echo "Generated JSON for parentKey = $parentKey<br>";
주요 결과
모든 parentKey에 대해 JSON 데이터를 생성하고 저장하는 작업을 성공적으로 마쳤습니다. 작업 도중 발생할 수 있는 오류는 예외 처리 구문으로 캡처했습니다.
} catch (PDOException $e) {
echo "오류: " . $e->getMessage() . "<br>";
echo "Stack Trace: <pre>" . print_r($e->getTrace(), true) . "</pre>";
}
이번 작업은 데이터베이스와 PHP 간의 긴밀한 통합을 보여준 좋은 사례였습니다. 정확한 데이터 처리를 위해 null 값 처리, JSON 변환, 데이터 업데이트 등 여러 단계를 거쳤습니다. 이를 통해 데이터 무결성을 유지하면서 작업의 자동화를 구현할 수 있었습니다. 앞으로도 이와 같은 데이터 통합 작업을 통해 보다 효율적인 시스템을 만들어 나갈 수 있을 것입니다.