웹스쿨

CSV 컨버팅 삽질 메모 본문

개발 경험 Tip/PHP

CSV 컨버팅 삽질 메모

마스터욱 2023. 3. 31. 00:19
반응형

CSV 를 제공해준 업체의 부실함으로 엄청 고생을 했습니다.

구분자가 싱글쿼터인데, 스트링에 싱글쿼터가 워낙 많다보니 결국 내용부분의 싱글쿼터 치환 프로그램부터 짰습니다.

 

<?php

 

ini_set('memory_limit','512M');

ini_set('max_execution_time', 0);

error_reporting(E_ALL & ~E_NOTICE);

 

$file = "upload/dbo.se_History.csv";

$file = "upload/dbo.se_Book_History.csv";

$fp = fopen($file, "r");

$string = fread($fp, filesize($file));

fclose($fp);

 

//$string = str_replace("\n", "<br>", $string);

$tmp = preg_split("/[0-9]{2}\:[0-9]{2}\:[0-9]{2}\.[0-9]{3}/", $string); //시간으로 분리

$list = array();

foreach($tmp as $key => $str){

if(trim($str) == ""){

continue;

}

 

$arr = explode("'", $str);

//print_r($arr);

 

 

$arr2 = $arr;

array_shift($arr);

array_shift($arr);

array_shift($arr);

array_pop($arr);

 

 

$list[$key] = str_replace("\n", "", $arr2[0]) . "'" . $arr2[1] . "'" . $arr2[2] . "'" . implode("`", $arr) . "'" . trim($arr2[sizeof($arr2) - 1]);

}

 

//print_r($list);

 

$sql = "SELECT id FROM  member";

$result = $core['db']->query($sql);

$id_list = array();

while($row = $core['db']->result_assoc($result)){

$id_list[] = $row['id'];

}

//print_r2($id_list);exit;

 

$type = "history";

foreach($list as $key => $value){

$tmp = explode("'", $value);

$stud_id = $tmp[1];

$writ_id = $tmp[2];

 

$content = addslashes($tmp[3]);

$content = str_replace("\n", "<br>", $content);

 

$reg_date = trim($tmp[4]);

 

if(in_array($stud_id, $id_list)){

$sql = "

INSERT member_history

SET type = '".$type."',

writ_id = '".$writ_id."',

stud_id = '".$stud_id."',

content = '".$content."',

reg_date = '".$reg_date."'

";

//echo $sql;exit;

$core['db']->query($sql);

}

}

 

echo "완료!";

exit;

?>


이 게시글은
https://webschool.kr/?v=board_view&board_key=7&idx=324
에서 작성한 글입니다. 소스코드의 경우 해당 블로그에서 이뿌게 노출이 되지 않을 수 있사오니, 위 링크로 들어오셔서 보시길 바랍니다.

반응형