0
가능한 중복 :
나는이 이전에 덮여있다,하지만 내가 찾은 모든 답변을 LOAD 데이터에 관련된 알고
Read a file from line X to line Y?가져 오기 CSV하지만 헤더 행을 무시
INFILE 메서드는 IGNORE 1 LINES를 사용하여 헤더를 무시하고 아래 코드를 시도했지만 오류가 발생합니다.
<?php
//database connect info here
//check for file upload
if(isset($_FILES['csv_file']) && is_uploaded_file($_FILES['csv_file']['tmp_name'])){
//upload directory
$upload_dir = "./csv";
//create file name
$file_path = $upload_dir . $_FILES['csv_file']['name'];
//move uploaded file to upload dir
if (!move_uploaded_file($_FILES['csv_file']['tmp_name'], $file_path)) {
//error moving upload file
echo "Error moving file upload";
}
//open the csv file for reading
$handle = fopen($file_path, 'r');
while (($data = fgetcsv($handle, 1000, ',')) !== FALSE) {
//Access field data in $data array ex.
$salutation = $data[0];
$leadname = $data[1];
$businessname = $data[2];
$address = $data[3];
$town = $data[4];
$county = $data[5];
$postcode = $data[6];
$phone = $data[7];
$email = $data[8];
$gasoiluser = $data[9];
$dervuser = $data[10];
$kerouser = $data[11];
$annualconsgasoil = $data[12];
$annualconsderv = $data[13];
$annualconskero = $data[14];
$gasoilmargin = $data[15];
$dervmargin = $data[16];
$keromargin = $data[17];
$fueldetails = $data[18];
$lubesdetails = $data[19];
$othernotes = $data[20];
$sentletterday = $data[21];
$sentlettermonth = $data[22];
$sentletteryear = $data[23];
$sentpostcardday = $data[24];
$sentpostcardmonth = $data[25];
$sentpostcardyear = $data[26];
$sentquoteday = $data[27];
$sentquotemonth = $data[28];
$sentquoteyear = $data[29];
$lastvisitedday = $data[30];
$lastvisitedmonth = $data[31];
$lastvisitedyear = $data[32];
$receivegasoilmailinglist = $data[33];
$receivedervmailinglist = $data[34];
$receivekeromailinglist = $data[35];
$gasoilmailinglist = $data[36];
$dervmailinglist = $data[37];
$keromailinglist = $data[38];
$mailtype = $data[39];
$createdby = $data[40];
echo 'Import Successful : ';
echo $leadname;
echo '<br/>';
//Use data to insert into db
$sql = sprintf("INSERT IGNORE hqfjt_chronoforms_data_addupdatelead (salutation,leadname,businessname,address,town,county,postcode,phone,email,gasoiluser,dervuser,kerouser,annualconsgasoil,annualconsderv,annualconskero,gasoilmargin,dervmargin,keromargin,fueldetails,lubesdetails,othernotes,sentletterday,sentlettermonth,sentletteryear,sentpostcardday,sentpostcardmonth,sentpostcardyear,sentquoteday,sentquotemonth,sentquoteyear,lastvisitedday,lastvisitedmonth,lastvisitedyear,receivegasoilmailinglist,receivedervmailinglist,receivekeromailinglist,gasoilmailinglist,dervmailinglist,keromailinglist,mailtype,createdby) VALUES ('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')",
mysql_real_escape_string($salutation),
mysql_real_escape_string($leadname),
mysql_real_escape_string($businessname),
mysql_real_escape_string($address),
mysql_real_escape_string($town),
mysql_real_escape_string($county),
mysql_real_escape_string($postcode),
mysql_real_escape_string($phone),
mysql_real_escape_string($email),
mysql_real_escape_string($gasoiluser),
mysql_real_escape_string($dervuser),
mysql_real_escape_string($kerouser),
mysql_real_escape_string($annualconsgasoil),
mysql_real_escape_string($annualconsderv),
mysql_real_escape_string($annualconskero),
mysql_real_escape_string($gasoilmargin),
mysql_real_escape_string($dervmargin),
mysql_real_escape_string($keromargin),
mysql_real_escape_string($fueldetails),
mysql_real_escape_string($lubesdetails),
mysql_real_escape_string($othernotes),
mysql_real_escape_string($sentletterday),
mysql_real_escape_string($sentlettermonth),
mysql_real_escape_string($sentletteryear),
mysql_real_escape_string($sentpostcardday),
mysql_real_escape_string($sentpostcardmonth),
mysql_real_escape_string($sentpostcardyear),
mysql_real_escape_string($sentquoteday),
mysql_real_escape_string($sentquotemonth),
mysql_real_escape_string($sentquoteyear),
mysql_real_escape_string($lastvisitedday),
mysql_real_escape_string($lastvisitedmonth),
mysql_real_escape_string($lastvisitedyear),
mysql_real_escape_string($mailtype),
mysql_real_escape_string($receivegasoilmailinglist),
mysql_real_escape_string($receivedervmailinglist),
mysql_real_escape_string($receivekeromailinglist),
mysql_real_escape_string($gasoilmailinglist),
mysql_real_escape_string($dervmailinglist),
mysql_real_escape_string($keromailinglist),
mysql_real_escape_string($createdby)
);
mysql_query($sql) or (mysql_query("ROLLBACK") and die(mysql_error() . " - $sql"));
}
//delete csv file
unlink($file_path);
}
?>
당신이 프로그래밍 방식으로 카운터 변수와 'CONTINUE'는 0, 예를 들어, 추가 수행하려는 경우 첫 번째 줄. 하지만 왜 'load data infile'을 사용할 수있을 때 프로그램 적으로 이것을하고 싶습니까? – Gordon
그렇다면 왜 'LOAD DATA INFILE'이 당신의 요구에 맞지 않는다고 생각합니까? – newtover
또한 최신 mysqli 또는 PDO로 전환하고 준비된 명령문을 사용하여 프로세스 속도를 높이는 것이 좋습니다. – Gordon