2014-02-15 4 views
0

나는 부하 데이터 INFILE 명령을 사용하여 자바 프로그램 thrugh MySQL의 테이블에서 파일을로드하고 싶습니다하지만 MySQL의 구문 오류 받고 있어요 :LOAD 데이터 INFILE의 MYSQL 오류

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 

SQL 문은 다음입니다 :

String sql = "LOAD DATA LOCAL INFILE '/Dataset/"+listOfFiles[i].getName()+".txt'" + 
          " INTO TABLE data " + 
          " CHARACTER SET utf8 " + 
          " FIELDS " + 
          "  TERMINATED BY '|' " + 
          " LINES " + 
          " STARTING BY 'status' " + 
          "  TERMINATED BY '\n' " + 
          " (@col_type, @col_origin, @col_text, @col_url, @col_id, @col_time, @col_retcount)"+ 
          "  set userid = '1234' " 
          "  , original = @col_origin "+ 
          "  , datatext = @col_text "+ 
          "  , url = @col_url "+ 
          "  , id = @col_id "+ 
          "  , retcount = @col_retcount "+         
          "  , date = str_to_date(@col_time, '%m/%d/%Y') "+ 
          "  , isanswer = CASE WHEN @col_origin LIKE '% abcd %' THEN 1 ELSE 0 END "; 

제 문제는 오류를 발견 할 수 없다는 것입니다. 누구도 도와 줄 수 있습니까?

답변

0

당신은

"  Terminated By '\\n' " + 
         ^new 

귀하의 문자열 근처에 자바 문자열에서 두 개의 백 슬래시를 (\)이 필요, 다음과 같을 것이다 :

String sql = "LOAD DATA " 
     + " LOCAL INFILE '/Dataset/"+listOfFiles[i].getName()+".txt'" 
     + " INTO TABLE data " 
     + " CHARACTER SET utf8 " 
     + " FIELDS " 
     + "  TERMINATED BY '|' " 
     + " LINES " 
     + " STARTING BY 'status' " 
     + "  TERMINATED BY '\\n' " 
     + " (@col_type, @col_origin, @col_text, @col_url, @col_id, @col_time, @col_retcount)" 
     + "  set userid = '1234' " 
     + "  , original = @col_origin " 
     + "  , datatext = @col_text " 
     + "  , url = @col_url " 
     + "  , id = @col_id " 
     + "  , retcount = @col_retcount " 
     + "  , date = str_to_date(@col_time, '%m/%d/%Y') " 
     + "  , isanswer = CASE WHEN @col_origin LIKE '% abcd %' THEN 1 ELSE 0 END ";