スプールのオン/オフを使用してクエリの内容を書き込む単純な sql plus コマンドがありました。スプールは、カンマ区切りの .csv ファイルを生成します。次に、この単純なファイルがデータを処理するプログラムにインポートされました。私はそのプログラムのソースを持っていません。私たちはそれを使用しているだけです。
後で、sql plusコマンドと同じことをしたいJavaプログラムを作成したので、クエリ結果を.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();
私が直面していること:
- ファイルの内容は同じです
- それらのサイズは同じです
- Notepad ++で開き、HEXビュー(プラグインを使用)が同じであることを確認し、違いはありません
- 興味深い事実の 1 つは、私が他の人にファイルをインポートするように頼んだ場合、彼はなんとかして
- そして、sql plusで生成された古いファイルを開き、Javaで生成された新しいファイルの内容を古いファイルにコピーすると、インポートプログラムは古いものを処理できます->新しいファイルに問題があると思います.. .
私の質問は次のとおりです。この場合、他に何を確認すればよいか考えている人はいますか? Javaのバージョンにもよるかな?それとも、私が認識していないものを見逃しましたか?または、オペレーティング システムの設定に依存しますか? たぶん、アイデアがこの問題を解決するのに役立つかもしれません。