티스토리 뷰

웹개발/Php

csv 파일 저장, 읽기

yaku 2011. 3. 24. 08:52

데이터를 이동하거나 백업할 때 XML을 많이 사용하고 있습니다. 데이터를 XML 형식으로 저장하게 되면 직관성, 호환성, 확장성 등을 높일 수 있습니다. 반면 경우에 따라서는 XML 형식으로 저장하지 않아도 될 만큼 구조가 간단하거나 데이터가 적을 수도 있습니다. . 또한 데이터를 빠르게 처리해야 하는 경우에도 XML은 좋지 않은 선택일 수 있습니다.

 1: <numbers> 
 2: <number>1</number> 
 3: <number>2</number> 
 4: <number>3</number> 
 5: </numbers>

위 코드는 1,2,3 값을 저장하기 위해 numbers 와 number 요소를 구성하고 있습니다. 이런 값이라면 간단하게 저장해도 될 것 같습니다.

1,2,3

이처럼 콤마(,)로 데이터 값을 구분하는 형식을 CSV(Comma-Separated Values)라고 합니다. 예를 들어 아래와 같은 데이터는 XML 이 아닌 CSV 형식으로 바꿔 보겠습니다.

이름 나이 성별
홍길동 18 남자
손담비 22 여자
이상무 28 남자
 
 1: 홍길동,18,남자 
 2: 손담비,22,여자 
 3: 이상무,28,남자

Array를 CSV 형식의 파일로 저장하기

PHP에서는 fputcsv( )를 사용해서 Array를 CSV 파일로 바로 저장할 수 있습니다.

 1: <?php 
 2: $address_book = array( 
 3: array("Hong Gilong",18,"Male") 
 4: ,array("Son Dambi",22,"Female") 
 5: ,array("Lee Sangmoo",28,"Male") 
 6: ); 
 7: 
 8: print_r($address_book); 
 9: 
 10: $fp = fopen("address_book.csv","w") or die("Can't create file."); 
 11: 
 12: foreach($address_book as $line) { 
 13: if ( fputcsv($fp,$line) === false ) die("Can't write."); 
 14: } 
 15: 
 16: fclose($fp); 
 17: ?> 
 18: 
 19: 실행 결과 : address_book.cvs 
 20: "Hong Gilong",18,Male 
 21: "Son Dambi",22,Female 
 22: "Lee Sangmoo",28,Male 
 23: 

CSV 형식의 파일을 Array로 읽어오기

Array를 CSV 파일로 저장했으니 반대로 CSV 파일의 데이터를 Array로 읽어오는 방법을 알아보겠습니다. 이 기능도 PHP에서 fgetcsv( )를 사용해서 쉽게 구현할 수 있습니다.

 1: <?php 
 2: $fp = fopen("address_book.csv","r"); 
 3: 
 4: $address_book = array(); 
 5: 
 6: while( $row = fgetcsv($fp) ) { 
 7: $address_book[] = $row; 
 8: } 
 9: 
 10: print_r($address_book); 
 11: ?> 
 12: 
 13: 실행결과 : 
 14: Array 
 15: ( 
 16: [0] => Array 
 17: ( 
 18: [0] => Hong Gilong 
 19: [1] => 18 
 20: [2] => Male 
 21: ) 
 22: [1] => Array 
 23: ( 
 24: [0] => Son Dambi 
 25: [1] => 22 
 26: [2] => Female 
 27: ) 
 28: [2] => Array 
 29: ( 
 30: [0] => Lee Sangmoo 
 31: [1] => 28 
 32: [2] => Male 
 33: ) 
 34: )

'웹개발 > Php' 카테고리의 다른 글

페이지 네이비게이션 ...형식  (0) 2011.06.09
Kohana3 - 연구  (0) 2011.06.08
csv 파일 저장, 읽기  (0) 2011.03.24
php 날짜 계산 strtotime 이용  (0) 2011.02.18
추상 팩토리 패턴  (0) 2010.12.20
Adapter 패턴  (0) 2010.12.20
댓글
댓글쓰기 폼