2013-02-09 59 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文件夹中创建文件。