2010-07-30 3 views
1

mysql에서 csv 파일로 2 개의 출력 데이터를 보내려고합니다. 다음과 같이 내 코드는 다음과 같습니다mysql 데이터를 CSV 파일로 내 보냅니다.

public void exportData(Connection conn,String filename) { 
     Statement stmt; 
     String query; 
     try { 
      stmt = conn.createStatement(); 

      //For comma separated file 
      query = "SELECT * into OUTFILE '/tmp/input.csv' FIELDS TERMINATED BY ',' FROM router "; 
      stmt.executeQuery(query); 

     } catch(Exception e) { 
      e.printStackTrace(); 
      stmt = null; 
     } 
    } 
}; 

내가 stmt.executequery가 호출 될 줄에서 다음과 같은 오류가 발생합니다.

java.sql.SQLException: Access denied for user 'nxy'@'%' (using password: YES) 
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1075) 
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3566) 
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3498) 
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1959) 
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2113) 
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2562) 
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2512) 
    at com.mysql.jdbc.StatementImpl.executeQuery(StatementImpl.java:1476) 
    at DBase.exportData(automateExport.java:50) 
    at automateExport.main(automateExport.java:18) 

데이터베이스에 제대로 연결하고 기본 쿼리를 실행할 수 있지만 데이터를 .csv 파일로 내보낼 수 없습니다. 도와주세요.

은 OUTFILE 명령 INTO에 .. SELECT를 통해, 당신은

답변

2

당신은 서버 호스트에서 생성되는 파일을 허용하도록 사용자 계정에 대한 FILE privilege이 필요합니다 감사합니다.

+0

빠른 응답을 보내 주셔서 감사합니다. 어쨌든 내가 사용할 수 있습니까? – JJunior

+0

"*. *"에 대한 GRANT FILE을 @ (Star- dot-star 주위의 따옴표를 제거하여 Stackoverflow가 먹는 것처럼 제거)하여 사용자에게 부여합니다 (사용자 및 호스트 태그를 적절한 값으로 대체해야 함). 귀하의 경우). GRANT FILE은 관리자 특권이므로,이를 실행하기 위해서는 루트로 접속해야합니다. –

+0

감사합니다. 하지만 왜 내가 서버 호스트에서 파일을 만들어야하는지 이해가 안돼 ??? 난 그냥 내 컴퓨터에 파일을 만들고 여기에 데이터를 내보낼 수 있습니다. 설명해 주시겠습니까 ?? – JJunior