[pgsql-jp: 33640] Re: EOF の問題について
もり
mmmd6 @ yahoo.co.jp
2004年 7月 13日 (火) 13:04:30 JST
もりです。
無事解決してなによりです。
いくつか気になった点を。
・EOF(End of File)について
後藤さんもおっしゃっていましたが、UNIX系のOSにEOFは存在しません。
最終行をEOFとおっしゃっていましたが、最終行とEOFは違います。
> g4almi:/Users/shared/id1 ninomiya$ emacs id1promtfse3nkf.txt
> 変換をemacsで確認;
・このemacsで確認というのが気になります。
emacsは、特殊文字コードの確認には向いていないと思います。
emacsは、エディタというより環境に近いですから、設定次第ではどのよう
な動作も行えてしまいますので、普通にless等で確認されてはいかがでしょう?
less id1promtfse3nkf.txt のように。
8進や16進コードとして見る場合は、odを使って見て下さい。
環境やコードによっては、lessでも不適当な場合もあるかと思います。
参考のため、Redhat 9のemacsでCRのみを改行コードとしたファイルを見て
みましたが、改行として扱われていました。しかしMiracle LINUXでは、emacs
でも^Mと表現されてます。
emacsのバージョンの違いか、glibc等の違いか、termcap等の違いかは分か
りませんが、できるだけ環境依存の影響を受けにくいツールで確認した方が
良いかと思います。
xemacs, gnome-terminalでのemacs -nw, ktermでのemacs -nw、putty上での
emacs表示でもRedhat 9では改行に見えています。
上記に限らず、確認を行われる際には、確認を行うツールが適切かどうかを
考える必要があるかと思います。
> 最後の行の改行には特に変換前と後で見た目には違いはない。また、¥nは見当たらな
> い。この改行は以前のemacsでの手入力したものとは異なっているコードと思われる
> (emacsで改行や最後の行に¥n入れてもエラーになる;後述の参考情報04.7.13を参照)
LFは、\nではありません。
混乱されているようですが、\nはあくまで2文字の\nにしかすぎません。
PostgreSQLのSQL文中や、C, C++など各種の言語中やツール中の文字列の中
に\nが現れた場合、それぞれのツールや言語が\nをLFとして扱うだけです。
従って、単純にファイル中にLFを入力したい場合は、UNIXでは改行を入れて
下さい。ファイル中に\nと記述しただけでは、LFにはなりません。
HINT: Use "\n" to represent newline.
を見て上記のように思われたのかもしれません。
これは挿入する文字列データ中に改行を入れてデータベースに投入する際に
は\nを使うというヒントだけだと思います。
つまり、
V$STAT1_03|10093|-|0.929|0.918|aAGAATca
の最後のデータ中で、aAGAATca を aAGA\nATcaとした場合、データとして、
aAGA
ATca
という2行にわたるデータとしてseqに入力されるということを言っているだ
けだと思います。
つまり、\copyで使用するファイル中の改行は、行のデリミタとして扱われ、
データベースに投入するデータ中に改行を入れたい時には\nを使うという意味
だと思います。
(私もPostgreSQLは初心者ですので、この辺の断定はできません)
二宮さんの場合、実際のファイル中のLFコードとLFを表す\nとの違いを混同
して使われているように思います。
> Emacsで改行や最後の行末に¥nを手で入力したid1promtfse3.txtを使用しても下記の
> ように受け付けてくれなかった。しかし上記のNKFやcat id1promtfse3.txt | tr
> '¥r' '¥n' > id1promtfse3return.txtで施行した結果として改行もしくは、最後の行
> 末¥nが入っていても受け付けてくれた。Emacsでみると見た目には変換前と後では差
> がなかった。
emacsで\nと書くのは、ただ\nという文字を書いただけです。
tr で\nと指定したのは、\nという2文字ではなく、LFを表すエスケープ文字
として\nと記述しています。
文字コードとしてみたら一目瞭然ですね。
emacs中の\n → 5C6E(16進表記)
trで扱う\n → 0A(16進表記)
です。
__________________________________________________
Do You Yahoo!?
http://bb.yahoo.co.jp/
pgsql-jp メーリングリストの案内