オラクルの手続き(utl_file.put_line)でcsvファイル(example.csv)を生成したのですが、メモ帳でファイルを開くと、ファイルの末尾にCR(キャリッジリターン)があることに気づきました。そのCRを削除したいだけです。
ファイルはサーバーUNIX(AIX)で生成され、メモ帳を使用してコンピューター(Windows)で開きます。
助けてくれてありがとう
オラクルの手続き(utl_file.put_line)でcsvファイル(example.csv)を生成したのですが、メモ帳でファイルを開くと、ファイルの末尾にCR(キャリッジリターン)があることに気づきました。そのCRを削除したいだけです。
ファイルはサーバーUNIX(AIX)で生成され、メモ帳を使用してコンピューター(Windows)で開きます。
助けてくれてありがとう
これは間違った方法のようです。Unixの改行はラインフィード(LF)であり、Windowsの改行はキャリッジリターンラインフィード(CRLF)です。
Unixでファイルを作成し、それをWindowsで開く場合、Windowsは通常、LFによる改行を意味することを認識しているため、問題はほとんどないと思います。逆に、Windowsでファイルを生成し、Linuxで開く場合は、各行の終わりに迷子の文字が表示される可能性があります。
ドキュメントには、utl_file.put_line
「オペレーティングシステム固有のラインターミネータを追加する」と記載されています。これは、発生している問題がほとんど意味をなさないことを意味します。各行の終わりにLFがあるはずです。さらに、Oracleがこれを誤って実行し、Windowsの改行を追加したとしても、CRLFになります。
なんらかの理由でメモ帳の最後にCRが追加されている可能性がありますが、これはあまり意味がありません。
常にWindowsでファイルを表示する場合の回避策は、を使用することですutl_file.put
。これには、最後にオペレーティングシステム固有の改行が含まれず、最後にCRLFが連結されます。
文字セット内の値がnutl_file.put( filename, theline || chr(13) || chr(10) );
の文字をchr(n)
返す何かの行。13はキャリッジリターン用のASCII、10は新しいライン用です。
この問題を解決する最も簡単で一般的な方法は、このツール unix2dos を使用することです。UNIXボックスでこのコマンドを実行し、ウィンドウでnew_example.csvファイルを開きます
これがあなたのためのコマンドです:
unix2dos -n example.csv new_example.csv
ベンの答えを拡張する:
使用することもできますutl_file.put_line( filename, theline || chr(13));
出力は行末と同じ [CR][LF] です。