2013-10-22 4 views
0

SQL 테이블에 삽입해야하는 txt 파일의 행을 포함하는 배열이 있지만 24 개의 열 중 4 개 (모든 값/t 간격)은 날짜이지만 시간 등으로 끝나야하므로 모두 15 자로 단축해야하므로 substr. 전체 배열을 분해하고 일부 열의 모든 값을 변경 한 다음 이전 배열로 다시 채우기

그래서 나는 그들을 다음 파일의 값을 변경할 삽입하는 다양한 방법을 시도했다, 그러나 하나 그냥 내 현재 코드처럼 작동하지 않습니다

$lines = file('F:/xamptest/htdocs/UniProject/upload/Amazon output.txt'); 
foreach($arr as $line) 
{ 
    $arr1 = explode("\t", $line); 
    $arr1[2] = substr($arr1[2], 0, -15); 
    $arr1[3] = substr($arr1[3], 0, -15); 
    $arr1[4] = substr($arr1[4], 0, -15); 
    $arr1[5] = substr($arr1[5], 0, -15); 
    $arri = implode("\t",$arr1); 
    file_put_contents('upload/ImportLine.txt', $arri); 
    mysql_query ("LOAD DATA INFILE 'F:/xamptest/htdocs/UniProject/upload/Amazon output.txt' INTO TABLE imported_orders FIELDS TERMINATED BY '\t'", $conn); 
} 

이의 날짜를 변경해야 행을 txt 파일에 저장 한 다음 테이블에 삽입하고 각 행에 대해 라운드를 반복하십시오. 그러나이 모든 것은 파일의 마지막 줄을 삽입하기 때문에 루프를 거치지 만 덮어 쓰게됩니다. 또는 내 메서드는 너무 오래 바람이 피고 열 및 값 모두 24 나열 테이블 및 대규모 SQL 삽입 필요가 포함됩니다. 나는이 방법으로 날짜의 파일 라인과 질량 SUBSTR을 포함하는 전체 배열을 폭발 할 수 있다면

내 포인트

그래서 궁금 해서요, 다음 이전 배열 라인 형식 넣어 다시 복원하는 다시 파일에 넣고 LOAD DATA INFILE을 사용하십시오. 원본 파일로드는 작동하지만 날짜는 '2013-03-11T20 : 35 : 33 + 00 : 00'이므로 날짜 유형으로 사용할 수 없습니다.

또한 값을 심의하는 변수를 단순히 변수로 삽입하고 배열을 만들지 않고 eachColumn = andValue [2]가 더 좋을 때 변수를 삽입하는 방법이있는 경우에도 마찬가지입니다.

감사합니다.

답변

0

어쩌면 루프 외부에서 마지막 두 줄을 움직일 수 있습니까?

file_put_contents('upload/ImportLine.txt', $arri); 
mysql_query ("LOAD DATA INFILE 'upload/ImportLine.txt' INTO TABLE imported_orders FIELDS TERMINATED BY '\t'", $conn); 
또한이 변경해야

:

$arri[] = implode("\t",$arr1); 

단지 추측,하지만 어쩌면 : LOAD DATA INFILE을 '업로드/ImportLine.txt'이것

$arri = implode("\t",$arr1); 

0

덮어 쓰지 않으려면 다음을 사용하십시오.

file_put_contents('upload/ImportLine.txt', $arri, FILE_APPEND | LOCK_EX);