Skip to content

CHICPRO

  • Life Log
  • Cycling Log
  • Photo Log
    • Portrait
    • Landscape
    • Flower
    • Etc
  • Coding Log
  • Information

CSV 파일을 읽어들여 DB에 저장하는 소스코드

2012-02-22 by 편리

아침에 2012/02/22 – 오늘 할 일은..라는 글을 쓴 후로 csv 파일에 저장된 회원 정보를 DB에 저장하는 코들 작성했다.
테스트 환경은 PHP 5.2.17, MySQL 5.5.15이다.

우선 테스트에 사용된 DB 테이블은 아래와 같이 생성했다.

CREATE TABLE IF NOT EXISTS `mb_old` (
  `mb_no` int(11) NOT NULL AUTO_INCREMENT,
  `mb_id` varchar(20) NOT NULL,
  `mb_password` varchar(255) NOT NULL,
  `mb_name` varchar(255) NOT NULL,
  PRIMARY KEY (`mb_no`),
  KEY `mb_id` (`mb_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 ;

CSV 파일의 구조와 내용은 아래 이미지와 같다.

아래는 csv 파일의 내용을 DB에 입력하는 소스코드이다.

<?php
include_once(“./dbconfig.php”);

// DB Connect
$connect = mysql_connect($mysql_host, $mysql_user, $mysql_password);
if(!$connect) {
    die(“Can’t Connect DB : ” . mysql_error());
}
@mysql_query(” set names utf8 “);
$db_selected = mysql_select_db($mysql_db, $connect);
if(!$db_selected) {
    die(“Can’t    Use $mysql_db : ” . mysql_error());
}

function mysql_password($value) // 비밀번호 암호화 함수
{
    $sql = ” select password(‘$value’) as pass “;
    $result = mysql_query($sql);
    $row = mysql_fetch_assoc($result);
    return $row[pass];
}

$csv = “./member.csv”;

$lines = file($csv); // member.csv 파일 전체를 배열로 읽어들임
$count = count($lines); // 파일의 라인 수

for($i = 1; $i < $count; $i++) {
    // csv 파일의 두번째 라인부터 DB에 입력해야 하므로 $i = 1
    $str = explode(“,”, rtrim($lines[$i], “rn”));

    $mb_id = trim(strip_tags(mysql_escape_string(addslashes($str[0]))));
    if(!$mb_id) { // mb_id 없으면 다음 라인
        continue;
    }
    $mb_password = mysql_password(trim(mysql_escape_string(addslashes($str[1]))));
    $mb_name = trim(strip_tags(mysql_escape_string(addslashes($str[2]))));

    $sql = ” insert into mb_old (mb_id, mb_password, mb_name) values (‘$mb_id’, ‘$mb_password’, ‘$mb_name’) “;
    $result = mysql_query($sql);

    if(!$result) { // 쿼리 에러 시 다음 라인
        continue;
    }
}
?>

이런 식으로 구성해서 파일을 웹서버에서 실행했을 때 CSV 파일의 내용이 DB에 정상적으로 입력되었다.
실제 회원 DB를 입력할 때는 몇가지 추가해야할 부분.. 예들들어 mb_id가 중복되는 지 등의 체크를 해야할 것이다.

한가지 주의할 점은 DB 서버의 문자셋이 UTF-8 이므로 csv 파일 역시 UTF-8 이어야 한다.
그렇지 않으면 한글 부분이 정상적으로 입력이 되지 않는다.

Post navigation

Previous Post:

오늘 할 일은..

Next Post:

농협은 도대체 왜 개인정보를 마음대로 이전한다는 걸까?

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Recent Posts

  • php 배열 연산에서 + 와 array_merge 의 차이
  • pcntl_fork 를 이용한 다중 프로세스 실행
  • 아이폰 단축어를 이용하여 주중 공휴일엔 알람 울리지 않게 하기
  • 구글 캘린더 전체일정 재동기화
  • OpenLiteSpeed 웹서버에 HTTP 인증 적용
  • OpenLiteSpeed 웹어드민 도메인 연결
  • WireGuard를 이용한 VPN 환경 구축
  • Ubuntu 22.04 서버에 OpenLiteSpeed 웹서버 세팅
  • 맥 vim 세팅
  • 우분투 시스템 터미널쉘 zsh 로 변경

Recent Comments

  • 편리 on 업무관리용 그누보드 게시판 스킨
  • 임종섭 on 업무관리용 그누보드 게시판 스킨
  • 캐논 5D 펌웨어 | Dslr 펌웨어 업그레이드 방법 82 개의 베스트 답변 on 캐논 EOS 30D 펌웨어 Ver 1.0.6 , EOS 5D 펌웨어 Ver 1.1.1
  • Top 5 캐논 5D 펌웨어 Top 89 Best Answers on 캐논 EOS 30D 펌웨어 Ver 1.0.6 , EOS 5D 펌웨어 Ver 1.1.1
  • 편리 on 워드프레스 애니메이션 gif 파일을 mp4로 변환하여 출력하기
  • 임팀장 on 워드프레스 애니메이션 gif 파일을 mp4로 변환하여 출력하기
  • 편리 on Notepad++ NppFTP 플러그인 수동 설치
  • paul-j on Notepad++ NppFTP 플러그인 수동 설치
  • YS on Windows 10 iCloud 사진 저장 폴더 변경
  • 편리 on Docker를 이용한 Centos7 + httpd + php 5.4 개발환경 구축

Meta

  • Log in
  • Entries feed
  • Comments feed
  • WordPress.org
© 2025 CHICPRO | Built using WordPress and SuperbThemes