2013-02-09 2 views
0

excel 또는 liberoffice calc에서 사용하기 위해 csv 파일을 만들려고합니다. 그러나 나는이 문제가있다.csv에 대한 mysql 테이블

mysql> SELECT * 
    FROM formtable 
    INTO OUTFILE "/tmp/try.csv" 
    FIELDS TERMINATED BY ',' 
    OPTIONALLY ENCLOSED BY '"' 
    ESCAPED BY '"' 
    LINES TERMINATED BY "\n"; 

이 명령을 사용하면 모든 것이 원활하게 작동합니다. 하지만 서버 쪽에서는 리눅스에 tmp 폴더와 같은 tmp 폴더가 없다고 생각합니다. 그 결과, 나는

mysql> SELECT * 
    FROM formtable 
    INTO OUTFILE "/var/www/try.csv" 
    FIELDS TERMINATED BY ',' 
    OPTIONALLY ENCLOSED BY '"' 
    ESCAPED BY '"' 
    LINES TERMINATED BY "\n"; 

아래 특정 경로를 제공하기 위해 노력 그리고 그것은 내가 /home/blah/try.csv로 경로를 제공하는 경우

ERROR 1 (HY000): Can't create/write to file '/var/www/try.csv' (Errcode: 13) 

같은 오류가있을 수 있습니다. 어떤 제안이 있으십니까?

+0

Windows/DOS 컴퓨터에 있습니까? 이 경우 경로는 C와 관련되어야합니다./ –

+1

서버는 어떤 시스템에 있습니까? linux의 경우 사용자/경로에 충분한 쓰기 권한이 있습니까? 서버가 리눅스 이외의 것이라면 경로 이름을 변경해야합니다. – Orangecrush

+0

mysql이 홈 디렉토리 나/var/www / – starshine531

답변

0
import java.io.FileNotFoundException; 
import java.io.FileWriter; 
import java.io.IOException; 
import java.sql.*; 
import java.util.ArrayList; 
import java.util.List;  
import au.com.bytecode.opencsv.CSVWriter; 

public class WriteCSV { 
    public static void main(String[] args) { 

     try { 
      String connectionURL = "jdbc:mysql://localhost:3306/test"; 
      Class.forName("com.mysql.jdbc.Driver"); 
      Connection con = DriverManager.getConnection(connectionURL, "root", "root"); 
      Statement stmt = con.createStatement(); 
      ResultSet rs = stmt.executeQuery("select id_movie, movie_name from movies"); 
      String csv = "E:\\dummyFolder\\output2.csv"; 
      CSVWriter writer = new CSVWriter(new FileWriter(csv)); 
      List<String[]> data = new ArrayList<String[]>(); 
      while (rs.next()) 
      { 
       data.add(new String[] { rs.getString(1), rs.getString(2) }); 
      } 
      writer.writeAll(data); 
      System.out.println("CSV written successfully."); 
      writer.close(); 

     } 
     catch (ClassNotFoundException e) { 
      e.printStackTrace(); 
     } 
     catch (SQLException e) 
     { 
      e.printStackTrace(); 
     } 
     catch (FileNotFoundException e) 
     { 
      e.printStackTrace(); 
     } 
     catch (IOException e) 
     { 
      e.printStackTrace(); 
     } 
    } 
} 

당신은 당신이 사용 권한을 확인해야합니다 here

0

에서 opencsv-2.3.jar를 추가해야합니다. ls -l /your/path.

사용자가 선택한 폴더에 쓸 수있는 권한이 없어야하지만, mysql 사용자입니다. 소유자, 그룹, "기타"권한을 확인해야합니다.

보통 /tmp 폴더에 파일을 만들 수 있습니다.

관련 문제