웹프로그램 연구(X) PHP와 CSV 파일 읽기용 컴포넌트

[목차(도우미)]
PHP에는 CSV파일을 읽기/쓰기 위한 함수, fgetcsv가 존재한다. 그런데 PHP 로 파일을 읽고 쓰는 경우는 다양한 용도가 있겠지만 결국은 데이터베이스에 넣어두려고 읽는 경우일 것이다.

CSV 파일을 읽어서 데이터베이스에 넣어주는 일련의 처리를 간결하게 재사용 가능한 컴포넌트를 만들려면 어떻게 하는것이 옳은가?

CSVReader 컴포넌트를 만들라

  1. class CsvReader {
  2.     __construct ($csv_file_name);
  3.     function read();
  4.     function did_read_file($number_of_line, $read_data);
  5. }

fgetcsv함수를 써서 구현하면서 읽은 내용을 이벤트 통지를 위한 재정의 함수 did_read_file를 불러들이면 된다.

소스예

출전: http://php.net/manual/en/function.fgetcsv.php
출전에 나온 예제를 응용하여 이벤트를 호출한다.

  1. <?php
  2. $n = 1;
  3. if (($handle = fopen($csv_file_name, "r")) !== FALSE) {
  4.     while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
  5.         did_read_file($n, $data);
  6.         $n++;
  7.     }
  8.     fclose($handle);
  9. }
  10. ?>

논의

  CSV파일의 끝부분에 공백줄이 있을 경우 did_read_file 이 발생하지 않도록 count($data) 를 확인하여 호출하는 것이 좋다. 다음 기회에는 데이터베이스에 넣는 처리까지 한번에 수행하는 방법을 논의할 것이다.
by 금메달.아빠 on 2011. 12. 5. 09:16