Terry Very Good

[Mysql] CSV파일을 DB에 업로드(UPSERT를 이용) 본문

프로그래밍/(WEB) DB관리

[Mysql] CSV파일을 DB에 업로드(UPSERT를 이용)

테리베리 2021. 1. 12. 17:08
728x90
반응형

로직

1. CSV파일의 출력(CAT) 결과를 변수에 저장
2. explode를 이용한 데이터 배열화 ( '줄'을 기준으로 앞뒷값들을 배열로)
(for문)  explode를 이용한 CSV 데이터 순차적 추출(','를 기준으로 앞뒷값들을 배열로)
|                  SQL문(UPSERT) 수행
/

<?php

include '../conn.php';

# csv파일 전부를 cmd라는 변수에 입력
$cmd = "cat ./dept_update_info.csv";
$res = `$cmd`;
$rows = explode("\n",$res);




for($i=2; $i < count($rows)-1; $i++)
{
  $data=explode(",",$rows[$i]);
  #echo $data[0];  //팀명(dept)
  #echo $data[1];  //조직코드(deptCD)
  #echo $data[2];  //조직전체명칭(dept_full)
  #echo $data[3];  //상위조직코드(upper_deptCD)
  #echo $data[4];  //순(ord)

  $sql =  "INSERT INTO iqms.dept_info                                         ";
  $sql .= "(                                                                  ";
  $sql .= "   dept, deptCD, dept_full, upper_deptCD, ord                      ";
  $sql .= ")                                                                  ";
  $sql .= "VALUES  													  			                          ";
  $sql .= "(                                                                  ";
  $sql .= "		?,?,?,?,?                                                       ";
  $sql .= ")                                                                  ";
  $sql .= "ON DUPLICATE KEY UPDATE dept=?, dept_full=?, upper_deptCD=?, ord=?;";

  #echo "\n\n".$sql."\n\n";

  $sql_obj = $conn->prepare($sql);
  $sql_obj->bind_param("sssssssss",$data[0],$data[1],$data[2],$data[3],$data[4],$data[0],$data[2],$data[3],$data[4]);
  $sql_obj->execute();
  $result = $sql_obj->get_result();
}
?>
728x90
반응형