2016-07-20 3 views
-1

18 열이있는 테이블이 있고 LOAD DATA INFILE을 사용하여 page_count 열의 모든 행을 업데이트하려고합니다. 데이터가있는 파일은 매우 단순하며 \ n 분리 값입니다. 나는 인상적인 것을 여기서 끌어 내려고하지 않고있다. 한 열의 값을 업데이트하려고합니다. 약 3000 개의 레코드가 있습니다. 내가 사용하는 코드는LOAD DATA INFILE을 사용하여 단일 열의 모든 행을 업데이트합니다.

LOAD DATA INFILE '/tmp/sbfh_counter_restore' REPLACE INTO TABLE obits FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n' (page_count); 

이다 그리고이 모든 수행은 열 PAGE_COUNT에 덤프 파일의 전체 내용을 하나 개의 새 행을 추가합니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까? 내가 phpmyadmin을 사용합니까? 나는 더 나은 나의 기술 세트에 맞는로 그 사용 드리겠습니다;

내가 사용하여 파일을 생성) SELECT page_count FROM obits INTO outfile '/tmp/sbfh_counter_restore'

+0

분명히 캐리지 리턴에 문제가 있습니다. Linux에서와 같이 '\ n \'을 '\ r \ n'으로 변경하십시오 (단, Win에서는 CR + LF가 아닙니다). outfile 형식도 확인하십시오. –

답변

0

I, 그것은 하나의 컬럼에 데이터로드를 지원하지 않습니다 MySQL의 문서에서 이해할 수있는 기반, 그러나 모든 열이 올바른 순서로 파일에 있어야합니다. 적어도 SELECT * FROM obits INTO outfile을 사용한 다음 열 순서가 일관되게 유지되도록로드해야합니다.

모든 파일 내용이 새 행으로로드되었으므로 테이블의 기본 키 (또는 고유 키)를 확인해야한다고 생각합니다. 행은 키와 일치되고 일치하는 결과에 따라 업데이트 또는 삽입됩니다. page_count가 기본 또는 고유 키가 아닌 것 같습니다. 도움이 되길 바랍니다.

+0

나는 그것을 잘못 생각하고 있었다. 나는 page_count에 정확한 데이터를 가지고있는 백업으로부터 새로운 테이블을 생성하고 그 값만을 생산 테이블로 복사해야만했다. temp_obits.obit_id = obits.obit_id에 obit.page_count = temp_obits.page_count ;' –

관련 문제