본문 바로가기

Coding

[PHP] DB 내용 CSV 포멧 파일로 저장하기

오늘은 DB 테이블의 내용을 읽어서 화일로 저장하는 방법을 알아 보겠습니다. 

테이블의 내용을 화면에만 뿌려주면 나중에 실제 데이타를 사용해야 할 일이 있을때 많이 불편하거든요 
그래서 만들어 낸것이 CSV(Comma Separated Values) 포맷을 이용해 화일로 만들고 이것을 받아서 
EXCEL 등에서 사용하는 것 입니다. 
CSV 포맷은 각각의 필드가 콤마(,)로 분리된 일반 텍스트입니다. 


우선 이름,국어,영어,산수,음악의 필드를 가진 점수 테이블을 만듭니다. 

create table score( 
name char(10), 
korean int , 
english int , 
math int , 
music int 
); 
insert into score values('진호',91,95,88,72); 
insert into score values('영수',88,98,100,85); 
insert into score values('철수',100,78,91,76); 
insert into score values('희동',95,76,67,95); 
insert into score values('둘리',78,66,82,100); 


특별히 어려운 점은 없고 테이블 내용을 화면에 써주는 대신 화일로 써주는 것 뿐입니다. 
한가지 주의할점은 파일이 생성되는 디렉토리의 퍼미션이 웹서버에게 쓰기 가능하도록 해 주셔야 합니다 
# chmod 777 ./CSV 처럼요 

아래는 소스 입니다.





//=============DB 접속 ======================== 
$connect=mysql_connect( "", "mysql", "") or die( "SQL server에 연결할 수 없습니다."); 
mysql_select_db("test",$connect); 

// ===================화일 생성============= 
$que1=" select * from score " ; 
$result=mysql_query($que1,$connect ); 

if(file_exists('/score.csv')) 
{ unlink('./score.csv'); } // 만일 이전에 만든 화일이 있으면 지운다 

$newline = chr(10); // LF(줄바꿈)의 ascii 값을 얻는다. 

$fp = fopen( "./score.csv", "w" ) or die("./score.csv 화일을 열수 없습니다") ; 
// score.csv 를 새로 연다 

fwrite($fp,"이름,국어,영어,산수,음악"); // 타이틀 쓰고 
fwrite($fp,$newline); // 줄바꾸기 

$row=mysql_fetch_array($result); 

while($row) 

fwrite($fp,$row[0].",".$row[1].",".$row[2].",".$row[2].",".$row[2]);
// 점수를 한줄씩 쓰고 
fwrite($fp,$newline);
// 줄 바꾸기 
$row=mysql_fetch_array($result); 

fclose($fp); 
//===================== 화일 쓰기 끝 ============== 

echo ("

CSV 파일로 저장하기

"); 
echo (" 저장FILE : score.csv "); 

?> 

// phpschool