2012-08-24 2 views
0

MySQL의 LOAD DATA LOCAL INFILE 기능을 사용하여 텍스트 파일의 레코드 줄을 테이블로로드합니다. 다 잘 작동하지만 내 테이블의 LINE_NUMBER 열에 텍스트 파일의 행 번호를 어떻게 삽입 할 수 있을지 궁금합니다.MySQL - 데이터 infile - 테이블에 행 번호를 읽고 삽입하는 방법?

public String getLoadDataSQL() throws Exception { 

    StringBuffer sb = new StringBuffer(); 
    sb.append("LOAD DATA LOCAL INFILE '"+ filePath +"' INTO TABLE "+ this.tableName); 
    sb.append(" LINES TERMINATED BY '\\n'"); 
    sb.append(" (@line) "); 
    sb.append(" SET ROLL_NUMBER = substr(@line,1,9), "); 
    sb.append(" LAST_NAME = substr(@line,10,30), "); 
    .... 
    sb.append(" LINE_NUMBER = "+ ????? +", "); // WHAT TO DO HERE?? 
    ... 
    System.out.println(sb.toString()); 
    return sb.toString(); 
} 

제발 어떻게 할 수 있겠 니?

답변

1

파일에서 데이터를로드 할 때이를 직접 수행 할 수 있는지 확실하지 않습니다. 하나의 해킹은 LINE_NUMBERAUTO_INCREMENT column으로 유지하는 것입니다.

+0

제안 해 주셔서 감사합니다. 시도했지만 AUTO_INCREMENT 논리 내 문제에 적합하지 않은 것 같습니다. – gtiwari333

+0

@gt_ebuddy AUTO_INCREMENT 컬럼이있는 임시 테이블로 가져 오기를 먼저 수행 한 다음 해당 데이터를 최종 목적지에 복사 할 수 있습니까? 그런 다음 줄 번호를 항상 1로 시작할 수 있으며 AUTO_INCREMENT의 논리가 간섭하지 않을지 걱정하지 않아도됩니다. 저의 접근 방식은 저의 호스팅 회사가 임시 테이블을 사용할 수 없다고 말할 때까지 저를 위해 일하고있었습니다. 이것은 우리가 여기서 우리의 문제에 대한 다른 대답을 찾는 방법입니다. – bugloaf

관련 문제