0

csvExcelまたはliberoffice calcで使用するためにファイルを作成しようとしています。しかし、私にはこの問題があります。

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

このコマンドを使用すると、すべてがスムーズに機能します。しかし、サーバー側では、Linux の tmp フォルダーのような 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。何か提案はありますか?

4

2 に答える 2

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();
        }
    }
}

ここから opencsv-2.3.jar を追加する必要があります

于 2013-02-09T12:41:35.690 に答える
0

権限を確認する必要があります。 ls -l /your/path.

ユーザーには、選択したフォルダーへの書き込み権限が必要ではなく、ユーザーが必要であることに注意してくださいmysql。所有者、グループ、「その他」の権限を確認する必要があります。

/tmp通常、フォルダ内にファイルを作成できます。

于 2013-02-09T15:25:13.080 に答える