You cannot see this page without javascript.

Skip to content

Home

조회 수 4621 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
손님들이 엑셀로 정리한 파일들을 디비에 밀어 넣으려구 노가다(울트라 에딧으로 파인드엔 리플레이스... ㅠ.ㅠ)작업을 하다가 도저히 이래선 안되겠다 싶어서 php스쿨에 와봤지만 따른 초절정 고수님의 귀뜸만 보일뿐 정확한 방법이 안보여서 직접 제작한뒤 올려 봅니다.

고수님들이 보시기엔 별거 아니겠지만... 초보분들껜 좀 도움이 되지 않을까 싶어서..

우선 엑셀을 CSV파일로 저장해야 하고요.. 저장시엔 규격에 맞게 하는건 당연히 아실테고.. 저장된 CSV파일과 저장될 테이블 명을 넣고 전송 버튼을 누르면 서버에 파일을 임시로 올린뒤 읽어 들여서 디비에 저장한뒤 올린 CSV파일을 지우는 방식입니다.

엑셀에 맨 첫줄은 컬럼명이 들어 가는 줄이므로 꼭 컬럼명을 정확히 적어서 올려 주시면 됩니다.

그리고 맨 마지막 컬럼엔 빈칸이 있으면 콤마 카운트가 잘못되서리.. 에러가 납니다. 모든데이타가 다 들어 있는 열을 맨 마지막 열로 설정하시길 바랍니다.

그럼 조금이라도 유용하게 쓰이길 바라겠습니다. (--)(__)(--)


<?php
/*
이 코드는 mysql테이블이 이미 설정되 있을경우 엑셀로 정리한 데이터를 쉽게 넣을수 있게 만든 코드 입니다.

접속함수는 각자 서버 환경에 맞게 설정하시고 Database 이름엔 이미 생성된 삽입할 테이블 이름을 정확히 넣어 주셔야 합니다.

엑셀 파일에서 전체 데이터를 선택하신뒤 Ctl + F버튼을 눌러 , (콤마) 를 찾습니다. (,를 기준으로 나누기 때문에 기존 데이터에 , 가
있으면 배열에 갯수가 안맞아서 에러가 납니다) 다른 부호나 빈 공간으로 Replace 하시기 바랍니다.

엑셀파일은 이미 생성된 테이블의 규격에 맞게 정보를 정리 하신뒤(특히 날짜 07/15/05 등은... 2005-07-05등으로 정확히 넣어 주셔야 합니다.)

맨 첫째 줄은 필드의 이름을 정확히 넣으셔야 합니다. (예: 필드가 c_id, c_name, c_dob, c_addr1, c_addr2 처럼 5개일경우라도
원하시는 필드 2개만 필요하시면 컬럼 두개만 작성하셔도 무방합니다. 나머지는 NULL로 되어도 괜찮을떈 NULL로 입력 됩니다.)

마지막으로 제일 중요한건 맨 마지막 컬럼은 빈칸이 있으면 안됩니다. (콤마 숫자를 잘못세서 배열 갯수가 헷갈려 에러가 날수가 있습니다.)
모든 데이타가 다 들어가는 열을 맨 오른쪽으로 엑셀에서 옮기시기 바랍니다.

별거 아닌 코딩이므로 자유롭게 배포 하셔도 좋습니다.

허접합니다. 초보 분들께 조금이나 도움이 되기를... --;;;; kero(kennethjro@msn.com) */

require_once('Connections/csv.php'); // mysql 접속 함수와 장소는 각자 맞게 설정

if($_POST['dbName']) { //함수 db_name이 넘어 오면 실행 시킨다.

copy($csvFile,"copy.csv"); //csv 파일을 현재 디렉토리에 저장 시킨다

$csvLoad = file("copy.csv"); // 저장된 파일을 읽어 들인다

$csvArray = split("n",implode($csvLoad)); // 행으로 나누어서 배열에 저장


for($i=1;$i<count($csvArray)-1;$i++) { // 행으로 나눠진 배열 갯수 만큼 돌린다($enter[0]에는 필드 이름이 있으므로 $i는 1번 부터 시작하고 총 갯수는 $csvArray에서 1를 뺀다

$field = split(",",addslashes($csvArray[$i])); //각 행을 콤마를 기준으로 각 필드에 나누고 DB입력시 에러가 없게 하기위해서 addslashes함수를 이용해 를 붙인다

$value = "'" . trim(implode("','",$field)) . "'"; //나누어진 각 필드에 앞뒤에 공백을 뺸뒤 ''따옴표를 붙이고 ,콤마로 나눠서 한줄로 만든다.

$insertSQL = sprintf("INSERT INTO %s (%s) VALUES (%s)", $_POST['dbName'], $csvArray[0], $value); // php쿼리문을 이용해서 입력한다.

mysql_select_db($database_csv, $csv); //$database_csv 와 $csv 함수는 각자 맞게 설정
$Result = mysql_query($insertSQL, $csv) or die(mysql_error()); //$csv 함수는 각자 맞게 설정
}

unlink("copy.csv"); //입력이 된후 업로드된 파일을 삭제한다

if($Result) {
echo("<script>window.alert('New DB add!')</script>"); // 업로드가 성공적으로 되었으면 경고창을 띄워서 알려준다.
}
}
?>
<html>
<head>
<title>CSV File to MySQL</title>
</head>

<body>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data" name="form1">
<table width="200" border="0" cellpadding="5" cellspacing="0">
<tr>
<td>Database Name<br><input name="dbName" type="text" id="dbName"></td>
</tr>
<tr>
<td>CSV file<br><input name="csvFile" type="file" id="csvFile"></td>
</tr>
<tr>
<td><input type="submit" name="Submit" value="Submit"></td>
</tr>
</table>
</form>
</body>
</html>


(안심) 짧은 주소는 : 입니다
?

List of Articles
번호 제목 날짜 조회 수
8 간단한 PHP 문법 PHP의 문법은 C나 Perl과도 비슷합니다. 물론 C에서의 포인터와 같은 어려운 부분은 없습니다. 또한 스크립트 언어이기 때문에 자바 스크립트처럼 HTML문서의 내... 2013.12.28 2652
7 엑셀 파일을 업로드 해서 MYSQL에 밀어 넣는 소스 프로그램 입니다. 저도 초보시절 고민 많이 했어요. 그래서 그때 만들어 사용하던 프로그램입니다. 좀 허술하지만 --- 이런식으로 넣고 있습니다. &lt;? //file_up.p... 2013.12.24 4085
» 엑셀화일을 업로드해서 MYSQL에 밀어 넣는 소스 손님들이 엑셀로 정리한 파일들을 디비에 밀어 넣으려구 노가다(울트라 에딧으로 파인드엔 리플레이스... ㅠ.ㅠ)작업을 하다가 도저히 이래선 안되겠다 싶어서 ph... 2013.12.24 4621
5 자바스크립트 핸드폰 번호 /전화번호 유효성 체크 &lt;html&gt; &lt;title&gt;Test Telno Check &lt;/title&gt; &lt;head&gt; &lt;SCRIPT language='JavaScript'&gt; function isNum(obj) { var sValue = obj.value; var idx = sValue.length; va... 2013.12.13 7446
4 preg_replace() - 빠른 정규식 preg_replace() 는 Perl 방식의 빠른 정규 표현식 변환으로 PHP4 에서 사용할 수 있는 함수 입니다. ereg_replace 함수 보다 몇배는 빠른듯 합니다. 그렇다고 ere... 2013.12.11 5030
3 - 팝업창을 띄우는 부모창의 소스 - 색상 표시된 소스들이 수정 또는 추가 보완되었습니다 - 팝업창을 띄우는 부모창의 소스 - &lt;SCRIPT LANGUAGE=&quot;JavaScript&quot;&gt; function getCookie(name) //쿠키의 ... 2013.12.07 2708
2 [PHP 오늘날짜를 기준으로 이전,이후 날짜구하기] [PHP 오늘날짜를 기준으로 이전,이후 날짜구하기] 시간이나 날짜 관련 함수들은 어렵진 않지만 그 사용빈도가 꽤나 높은 함수들입니다. 대표적으로 누군가가 웹... 2013.11.11 5667
1 데이터 베이스 종류 데이터베이스 종류가 아니라 데이터타입의 종류네요 데이터베이스는 데이터가 저장되고 가져오고 할수 있는것을 말하구요 위의 것들은 데이터를 저장할때 어떤형... 2013.11.11 11098
Board Pagination Prev 1 2 Next
/ 2

전체 방문자 : 1,172,159 오늘 : 64 어제 : 189 문서 : 0 댓글 : 0
전체회원 : 0 엮인글 : 0 첨부파일 : 0 전체 페이지뷰 : 11,374,405 오늘 페이지뷰 : 193 어제 페이지뷰 : 533
Copyright by Myceo 2008 All rights reserved
수원시 팔달구 인계동 1017-3 2층
☏1600-0324

Made By Myceo

sketchbook5, 스케치북5

sketchbook5, 스케치북5

나눔글꼴 설치 안내


이 PC에는 나눔글꼴이 설치되어 있지 않습니다.

이 사이트를 나눔글꼴로 보기 위해서는
나눔글꼴을 설치해야 합니다.

설치 취소