2013-02-09 43 views
0

我嘗試創建csv文件以便在excel或liberoffice calc中使用它。但我有這個問題。Mysql表格csv

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

如果我用這個命令一切工作順利進行。但在服務器端,我不認爲我有tmp文件夾,如linux中的tmp文件夾。其結果是,我試着給下面

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

特定的路徑,它給

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

同樣的錯誤存在,如果我給路徑/home/blah/try.csv。你有什麼建議嗎?

+0

你在windows/dos機器上嗎? 如果是這種情況,路徑應該是相對於C:/ – 2013-02-09 11:56:21

+1

服務器在哪臺機器上?如果linux,用戶/路徑是否有足夠的寫入權限?如果服務器不是Linux,則需要更改路徑名。 – Orangecrush 2013-02-09 12:02:01

+0

mysql可能對您的主目錄或/ var/www / – starshine531 2013-02-09 13:46:37

回答

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文件夾中創建文件。