无法将数据从数据库导出到 csv 文件
Posted
技术标签:
【中文标题】无法将数据从数据库导出到 csv 文件【英文标题】:Can't export data from a database to a csv file 【发布时间】:2019-05-15 06:56:20 【问题描述】:我正在尝试从云上的数据库中收集数据并将每个属性和元组导出到 csv 文件中。
static final String JBDC_DRIVER="com.mysql.jbdc.Driver";
public static void main(String[]args)
String filename = "c:/users/myjbdcfile.csv";
try
FileWriter fw = new FileWriter(filename);
Connection conn = (Connection) DriverManager.getConnection(DB_URL,user,pass);
String query = "select * from allSavedSongs";
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(query);
while(rs.next())
fw.append(rs.getString(1));
fw.append(',');
fw.append(rs.getString(2));
fw.append(',');
fw.append(rs.getString(3));
fw.append(',');
fw.flush();
fw.close();
conn.close();
catch (Exception e)
e.printStackTrace();
我收到错误 java.io.FileNotFoundException: c:\users\myjbdcfile.csv (Access is denied) 我也尝试过 String filename = "c:\users\myjdbcfile. csv";
【问题讨论】:
在云中你可能会得到一个 unix vm,你将如何获得 C:/ drive 那里? @Sambit 我正在尝试将其从谷歌云中取出并将数据提取到我硬盘上的 csv 文件中 您是否以"c:/users/"
的访问权限运行此代码?您是否尝试过使用String filename = "c:\\users\\myjdbcfile.csv"
?
如何让它以特权访问。你我试过@deHaar
可能,您当前的Windows用户无法访问"c:\users\"
,而是访问"c:\users\YOUR_CURRENT_USERNAME\"
,尝试在您当前用户的目录下创建文件。
【参考方案1】:
通常C:/Users不会有写权限,除非你修改权限。 我不希望修改权限并使用不同的驱动器或文件夹。
String filename = "D:/users/myjbdcfile.csv";
File dbFile = new File(filename);
dbFile.getParentFile().mkdirs();
dbFile.createNewFile();
FileWriter fw = new FileWriter(dbFile);
此外,您正在将每条记录的数据写入文件,这会影响性能。 使用 StringBuilder 和 List 并围绕它构建逻辑。
【讨论】:
【参考方案2】:您是否考虑过完全不编写 java 代码的方法?使用 IntelliJ IDEA Ultimate,您可以简单地将 export sql results 转换为 file:
CSV 或creating a custom extractor script 所需的任何自定义格式。
【讨论】:
以上是关于无法将数据从数据库导出到 csv 文件的主要内容,如果未能解决你的问题,请参考以下文章
SwiftUI - 将核心数据导出到 CSV 文件 - 无法遍历实体
将特定查询数据从 netezza 数据库导出到 CSV 文件