2012-06-19 2 views
1

내 웹 사이트의 인벤토리 용 CSV 파일을 다운로드하고 업로드하는 스크립트가 있습니다. 수동으로 파일을 다운로드하여 업로드하면 모든 것이 정상입니다. 스크립트를 실행하여 파일을 다운로드하고 업로드하면 csv 파일의 모든 행 다음에 빈 행이 추가됩니다.가져온 CSV 파일에 여분의 빈 행이 추가되는 이유는 무엇입니까?

원본 소스에서 파일을 직접 다운로드하여 내 스크립트에서 업로드 한 파일과 비교하여 알 수 있습니다.

거기에서 파일을 mysql 데이터베이스로 가져옵니다.

누구나이 빈 줄이 CSV 파일에 추가되는 것을 막을 수 있습니다. 데이터베이스에 행을 업로드하고 테이블에 새로운 내용을 추가하지 않으면 문제가 발생합니다. 나는이에 대한 소스 포지 (http://phpseclib.sourceforge.net/)를 사용하고

<?php 
set_time_limit(0); 
ini_set('memory_limit','512M'); 
ini_set('upload_max_filesize', '64M'); 
include('Net/SFTP.php'); 

//Original Location (SFTP) 
$sftp2 = new Net_SFTP('example.com'); 
if (!$sftp2->login('username', 'password')) { 
exit('Login Failed'); 
} 

//echo $sftp2->pwd() . "\r\n"; 
$sftp2->get('file.csv', 'file.csv'); 
//print_r($sftp2->nlist()); 

echo "Success!"; 
?> 

:

편집 : 코드 mysql을 dB로 CSV 정보를 보낼 :

$file = "./file.csv"; 

$handle = fopen($file, r); 

$firstentry = 0; 

while($csv = fgetcsv($handle)) 
{ 
if($firstentry == 0) 
{ 
    $firstentry++; 
} 
else 
{ 
    $csv[7] = strtotime($csv[7]); 

    $csv[7] = date("Y-m-d H:i:s",$csv[7]); 

    if($csv[18] == 217 || $csv[18] == 38) 
    { 
      if(!mysql_query("INSERT IGNORE INTO TABLE_NAME 
       (Col1, Col2, Col3, Col4, Col5, 
        Col6, Col7, Col8, Col9, Col10,     
       Col11, Col12, Col13, Col14, Col15, 
        Col16, Col17, Col18, Col19, Col20, 
       Col21, Col22, Col23) VALUES 
       ('".md5($csv[0].$csv[2])."','".addslashes($csv[0])."','".addslashes($csv[1])."','".addslashes($csv[2])."','".addslashes($csv[3])."','".addslashes($csv[4])."', 
        '".addslashes($csv[5])."','".addslashes($csv[6])."','".addslashes($csv[7])."','".addslashes($csv[8])."','".addslashes($csv[9])."', 
       '".addslashes($csv[10])."','".addslashes($csv[11])."','".addslashes($csv[12])."','".addslashes($csv[13])."','".addslashes($csv[14])."', 
        '".addslashes($csv[15])."','".addslashes($csv[16])."','".addslashes($csv[17])."','".addslashes($csv[18])."','".addslashes($csv[19])."', 
       '".addslashes($csv[20])."','".addslashes($csv[21])."')")) 
      {      
       exit("<br>" . mysql_error()); 
      } 
      else 
      { 
       print_r($csv); 
       echo " insert complete<br><br>"; 
      } 


    }   
} 
} 

코드 다운로드를/CSV 파일을 업로드합니다.

+3

내 수정 구슬은, 어떤 경우에 – Andy

+0

"우리에게 몇 가지 코드를보기"LOAD 자료 INFILE' – Gordon

+1

내 수정 구슬 '에 대한 SO 검색 말한다 나쁜 라인 - 엔딩 번역자가 말한다. –

답변

1

당신은 당신이 그것을 다운로드 한 후 파일 내용에서이 작업을 시도 할 수 :

$contents=preg_replace('/(\r\n|\r|\n)/s',"\n",$contents); 
관련 문제