
PdoPgsql::copyFromArray 메서드는 PostgreSQL의 COPY 명령어를 사용하여 데이터를 삽입하는 메서드입니다. 이 메서드를 사용하려면, 먼저 데이터를 배열로 준비하고, 메서드에 데이터 배열과 테이블 이름을 전달해야 합니다.
예를 들어, 다음과 같이 데이터 배열을 준비하고, 메서드에 데이터 배열과 테이블 이름을 전달할 수 있습니다.
#hostingforum.kr
php
$data = array(
array('id' => 1, 'name' => 'John'),
array('id' => 2, 'name' => 'Jane'),
array('id' => 3, 'name' => 'Bob')
);
$stmt = $pdo->prepare('COPY users FROM STDIN WITH CSV HEADER');
$stmt->execute($data);
위 예제에서, $data 배열에는 데이터가 저장되어 있으며, $stmt 변수는 COPY 명령어를 실행하는 prepare 문입니다. execute 메서드에 데이터 배열을 전달하여 데이터를 삽입할 수 있습니다.
또한, COPY 명령어의 옵션을 지정할 수 있습니다. 예를 들어, CSV 헤더 옵션을 지정하려면, WITH CSV HEADER 옵션을 추가할 수 있습니다.
#hostingforum.kr
php
$stmt = $pdo->prepare('COPY users FROM STDIN WITH CSV HEADER');
$stmt->execute($data);
또한, 데이터 타입을 지정할 수도 있습니다. 예를 들어, id 열은 INTEGER 타입으로 지정하려면, TYPE INTEGER 옵션을 추가할 수 있습니다.
#hostingforum.kr
php
$stmt = $pdo->prepare('COPY users(id INTEGER, name VARCHAR) FROM STDIN WITH CSV HEADER');
$stmt->execute($data);
위 예제에서, id 열은 INTEGER 타입으로 지정되었으며, name 열은 VARCHAR 타입으로 지정되었습니다.
또한, 데이터를 삽입할 때, 오류가 발생할 경우, 오류 메시지를 출력할 수 있습니다. 예를 들어, 오류 메시지를 출력하려면, set_error_handler 함수를 사용할 수 있습니다.
#hostingforum.kr
php
function errorHandler($errno, $errstr, $errfile, $errline) {
echo "Error: $errstrn";
}
set_error_handler('errorHandler');
$stmt = $pdo->prepare('COPY users FROM STDIN WITH CSV HEADER');
$stmt->execute($data);
위 예제에서, errorHandler 함수는 오류 메시지를 출력하는 함수입니다. set_error_handler 함수를 사용하여 errorHandler 함수를 오류 핸들러로 지정하면, 오류 메시지를 출력할 수 있습니다.
이러한 예제를 통해, PdoPgsql::copyFromArray 메서드를 사용하여 데이터를 삽입하는 방법을 알 수 있습니다.
2025-03-10 16:11