我有一个简单的sql plus命令,它在spool开/关的帮助下写入查询的内容。假脱机生成以逗号分隔的.csv文件。然后将这个简单文件导入到一个程序中,该程序处理数据。我没有该程序的来源,我们只是使用它。
后来我创建了一个Java程序,它希望执行与sql plus命令相同的程序,因此将查询结果放入.csv文件中。它生成文件,一切都与旧文件相同,但导入过程不想继续处理数据。
这是sql plus命令(我使用了以下设置):
Clear Buffer;
Clear Breaks;
Clear Columns;
Clear Computes;
TTitle Off;
BTitle Off;
Set Echo Off;
Set Heading Off;
Set NewPage 0;
Set PageSize 0;
Set LineSize 244;
Set Space 0;
Set Feed Off;
Set RecSep Off;
Spool import.csv;
Select line
From table
Order By id;
Spool Off;
然后在Java程序中:
PreparedStatement ps = connection.prepareStatement("Select rpad(line, 244, ' ') From table Order By id");
ResultSet rs = ps.executeQuery();
PrintWriter writer = new PrintWriter("import.csv", "UTF-8");
while(rs.next()) {
writer.println(rs.getString(1));
}
writer.close();
rs.close();
ps.close();
我面临的是:
我的问题是:有没有人知道在这种情况下还要检查什么?可能它取决于Java版本?或者我错过了一些我不认识的东西?或者它取决于操作系统设置?也许一个想法可以帮助我解决这个问题。