2012-12-30 2 views
0

나는 CM23 5YF 형식의 포스트 코드 1,755,213 개 항목이있는 데이터베이스를 가지고 있습니다. 나는 이것들을 CM235YF로 바꿔 공간을 제거하고 새로운 칼럼 (Wardcode)에서 점수를 매기기를 원한다. 내가하나의 쿼리로 큰 데이터베이스 업데이트

기능을 사용하고 어떤

우편 번호Wardcode, 여기
은이 방법으로 그것을 사용

//*** Select * from uk_data 
       function uk_pc_data($id){ 
       global $host, $dbname, $user, $pass; 
       $DBH = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass); 
       $DBH->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); ///*** for error handling 165000 
       $STH = $DBH->query("SELECT * from uk_pc order by Postcode asc LIMIT $id, 50000"); 
       $STH->setFetchMode(PDO::FETCH_ASSOC); 
       return $STH; 
      } 
      //*** Update Cat10 with Post code 
       function uk_pc_update_wardcode(){ 
       global $host, $dbname, $user, $pass; 
       $DBH = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass); 
       $DBH->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); 
       $STH = $DBH->prepare("update uk_pc SET 
       Wardcode = :cat10 
       WHERE Postcode = :Postcode 
       "); 

       $STH->bindValue(':Postcode' , $Postcode); 
       $STH->bindValue(':cat10' , $cat10); 

       return $STH; 
      } 

있습니다

,
$q = $_GET['id']; 

$STH1 = uk_pc_data($q); 
     while (($row = $STH1->fetch()) !== false) { 
    $pc_o = change_text(' ', '', $row['Postcode']); 

    $data_insert = array(':cat10'=>$pc_o , ':Postcode'=>$row['Postcode']); 
    $STH = uk_pc_update_wardcode(); 
    $STH->execute($data_insert); 
    echo $pc_o .'<br>'; 

    } 

이것을 변경할 수있는 쉬운 방법이 있습니까? 내 스크립트가 작동하지만, 내가 사용할 수있는 다른 방법이 있는지 알고 싶습니다. 단 하나의 스크립트만으로이 모든 작업을 수행 할 수 있습니까?

+0

매우 비효율적 인 ... 이러한 함수를 호출 할 때마다 db에 연결하지 마십시오. 그것은 5000 마일을 운전하여 목적지에서 1 페니를 땅에 떨어 뜨리는 것과 같습니다. 귀하의 기능을 벗어난 ** ** 한 발을 연결하십시오. –

답변

1
UPDATE postcodes SET new_column = REPLACE(old_column, ' ', '') 

하지만 먼저 new_column을 만들어야합니다.

+0

완전히 새로운 열은 필요하지 않습니다. 현재 열의 값을 바꾸기의 결과로 덮어 쓰면됩니다. 그러나 업데이트를 수행 할 때 현재 열에있는 키에 따라 매우 오랜 시간이 걸릴 수 있습니다. 나는 또한 업데이트를하기 전에 키를 놓고 다시 만들 것을 제안 할 것이다. – Xnoise

+0

@Sergejs Rižovs thx bro;) – Harinder

관련 문제